2008年12月26日

IDE製品に同梱のInterBase(Local/Developer Edition)に関するまとめ

Delphiには開発用にInterBaseが同梱されていますが、どのバージョンがどのプロダクトに含まれているのかをまとめてみました。
Local InterBase Server 4.1
最新アップデート: (n/a)
プロダクト: Delphi 2
対応OS: Windows 95/NT 4.0
制限事項: ローカル接続のみ
参照URL: (n/a)
Local InterBase Server 4.2.1
最新アップデート: (n/a)
プロダクト: Delphi 3/3.1
対応OS: Windows 95/NT 4.0
制限事項: ローカル接続のみ
参照URL: (n/a)
InterBase 5.0
最新アップデート: (n/a)
プロダクト: C++Builder 3/Delphi 4
対応OS: Windows 95/NT 4.0
制限事項: Local InterBaseライセンスのみ
参照URL: (n/a)
InterBase 5.6
最新アップデート: (n/a)
プロダクト: Delphi 5/C++Builder 5
対応OS: Windows 95/98/NT4(SP5)
制限事項: Local InterBaseライセンスのみ
参照URL: (n/a)
InterBase 6
最新アップデート: (n/a)
プロダクト: Delphi 6/7/C++Builder 6
対応OS: Windows 98SE/Me/NT 4.0(SP6a)/2000(SP1)
制限事項: Local InterBaseライセンスのみ
参照URL: (n/a)
InterBase 7.1
最新アップデート: Service Pack 2 + Security update
プロダクト: Delphi 2005
対応OS: Windows 98/Me/NT 4.0(SP6a)/2000(SP2)/XP/Server 2003(IB7.1 SP2)
制限事項: IDE製品がインストール済かつ許諾済であること?
参照URL: (n/a)
InterBase 7.5
最新アップデート: 7.5.1 Service Pack 1
プロダクト: Developer Studio 2006/JBuilder 2006
対応OS: Windows 2000(SP4)/XP Pro(SP2)/Server 2003(SP1)
制限事項: IDE製品がインストール済かつ許諾済であること(特に設定を行わないとサービスとしては起動しない)
参照URL: InterBase 7.5 Developer の起動について
InterBase 2007
最新アップデート: Service Pack 3
プロダクト: RAD Studio 2007
対応OS: Windows 2000(SP4)/XP(SP2)/Server 2003/Vista
制限事項: 最大48時間までしか連続稼動できない
参照URL: InterBase 2007 Developer Editionの仕様について
InterBase 2009
最新アップデート: Hotfix Update 4
プロダクト: RAD Studio 2009
対応OS: Windows 2000(SP4)/XP(SP2)/Server 2003/Vista/Server 2008
制限事項: 最大48時間までしか連続稼動できない?
InterBase XE
最新アップデート: Update 5
プロダクト: ?
対応OS: Windows XP(SP3)/Vista(x86/x64)/Server 2008/7(x86)/Server 2008 R2
制限事項: 最大48時間までしか連続稼動できない、4coreまでのサポート、20同時接続ユーザ(80コネクション)
InterBase XE3
最新アップデート: Update 1
プロダクト: RAD Studio XE3
対応OS: Windows XP(SP3)/Vista(x86/x64)/Server 2008/7(x86/x64)/Server 2008 R2/8(x86/x64)/Server 2012
制限事項: 最大48時間までしか連続稼動できない、4coreまでのサポート、20同時接続ユーザ(80コネクション)
2011/01/06追記: InterBase 2009/XEの情報を更新しました。

2012/12/31追記: InterBase XEの情報を更新し、InterBase XE3の情報を追加しました。

2008年12月24日

日本法人代表交代

旧Borland日本法人のIDE部門分社化以来の責任者でエンバカデロ・テクノロジーズ合同会社(いわゆる日本法人)の代表(職務執行者)の八重樫さんが退任され、替わって藤井さんが日本法人の代表になる、というニュースが飛び込んできました。海の向こうはハッピーホリデーの休暇に入るところ(そして日本も年内は後3日)というタイミングでの発表(非公式ですけど)はちょっと驚きです(年内に、ということであれば最後のタイミングですが)。
八重樫さんとは2回ほどお話をさせていただきましたが、見た目とは違い(見た目通り?)、優しく気さくな方でした(敵にしたら恐ろしい、かも…)。次はどのようなことをされるのでしょうか?ご活躍をお祈りしています。

2008年12月21日

[書籍]Delphi 2009 Handbook/Delphi 2009 Development Essentials

Marco CantuさんのDelphi 2009 HandbookがLulu.comから到着。Bob SwartさんのDelphi 2007 for Win32 Development EssentialsDelphi 2009 Development Essentialsも一緒に買ったのでまとめて積んだ。

2008年12月20日

Delphi 2009/C++Builder 2009 Help Update 1

Delphi 2009/C++Builder 2009のHelp Update 1がリリースされています。
リリースノート: Delphi 2009 および C++Builder 2009 Help Update 1

Dee Ellingさんによれば、CHM/PDF/HTML版がEmbarcadero CodeGear Product Documentation SITE BETAに載るのは来年になるようです。あちらはもうホリデーシーズンですしね。

2011/05/04追記: codegear.comのリンクをembarcadero.comのものに差し替え。

2008年12月19日

DBX4 BDE Driver

Team Japan » DBX4 BDE Driver
興味深い。後日追記予定(?)。

2008年12月18日

Microsoft OOB Update 2008/12

Microsoftの定例外のセキュリティアップデートがリリースされています。
MS08-078

2008年12月16日

ファイルサイズを取得する(2)

前回のファイルサイズの取得の方法ではNTFSログファイルが一杯になると取得できるファイルサイズがファイルの更新に従って変化しなくなるという不具合を避けることができません。そこでこのKBのworkaroundに従ってWin32APIのGetFileSizeExを使用してファイルサイズを取得する方法です。
function GetFileSizeEx(hFile: THandle; var lpFileSize: LARGE_INTEGER): BOOL; stdcall;
  external kernel32 name 'GetFileSizeEx';

function GetFileSize(const Filename: String; var FileSize: Int64): Boolean;
var
  Handle: THandle;
  LI: LARGE_INTEGER;
begin

  Result := False;

  FileSize := 0;
  Handle := Windows.CreateFile(PChar(Filename),GENERIC_READ,0,nil,
                               OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  if Handle = INVALID_HANDLE_VALUE then
  begin
    Exit;
  end;

  try
    if GetFileSizeEx(Handle,LI) = False then
    begin
      Exit;
    end;

  finally
    Windows.CloseHandle(Handle);
  end;

  FileSize := LI.LowPart or (Int64(LI.HighPart) shl 32);
  Result := True;

end;

GetFileSizeExがオープン済のファイルハンドルを要求するため、CreateFileで一旦ファイルをオープンし、ファイルサイズ取得後にクローズするようにしています。このためアクセス権などの問題からオープンに失敗するようなファイルのサイズを取得することができません。

Delphi 2009/C++Builder 2009 Update 2

Delphi 2009/C++Builder 2009のUpdate 2がリリースされています。Update 2はデータベース関係のアップデートのみとのことです。また事前にUpdate 1を適用しておく必要があります。
リリースノート: Delphi 2009 および C++Builder 2009 Update 2
List of Bug Fixes in Update 2 for Delphi and C++Builder 2009

2008年12月13日

InterBase 2007 Service Pack 3リリース

InterBase 2007 SP3 for Windows - Japaneseがダウンロードできるようになっています。
InterBase 2007 Service Pack 3 (8.1.1.333) リリースノート

2008/12/16追記: InterBase 2007 SP3はSP2適用済の環境にのみ適用可能です(SP2の詳細についてはこちら)。

2008年12月11日

スプラッシュフォームを表示する

メインフォームを表示するのに時間がかかる(データベースを参照していたり、大きなファイルを読み込む必要があったり、理由はさまざまでしょうけれども)ようなときに、スプラッシュフォームを表示することでこれをごまかす、じゃなくて目立たなくするという方法があります。
まず表示に時間がかかるメインフォームとしてこのようなものを考えます。
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin

  for I := 0 to 99 do
  begin
    Sleep(100);
  end;

end;

起動からメインフォームの表示まで10秒かかります(あたりまえ)。
ここでスプラッシュ用のフォームを用意します。必要に応じてプロパティを指定したりLabelやPanelやImageなどを配置してそれなりの体裁を整えていただくとして、ここで必要なイベントハンドラはOnDeactivateです。OnDeactivateイベントハンドラではReleaseメソッドを呼び出してスプラッシュフォーム自身を解放するようにします。
type
  TForm2 = class(TForm)
    procedure FormDeactivate(Sender: TObject);
  end;

procedure TForm2.FormDeactivate(Sender: TObject);
begin

  Release;

end;

さらにスプラッシュフォームを表示するためのメソッドを用意します。このスプラッシュフォームには通常の(メッセージループ経由の)メッセージが全く送られない(アプリケーションのメッセージループが動作し始めると直後にOnDeactivateが発生する)ので、Updateメソッドで強制的に表示更新を行う必要があります。
procedure ShowSplashForm;
begin

  with TForm2.Create(nil) do
  begin
    Show;
    Update;
  end;

end;

そしてこのメソッドをプロジェクトソース内のApplication.Initializeの後で呼び出します。
begin

  Application.Initialize;

  ShowSplashForm;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

end.

Delphi 2007以降ではWindows Vista対応のためにApplicationとメインフォームの関係を色々と変更したために
begin

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  ShowSplashForm;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

end.

とApplication.MainFormOnTaskbarの設定の後にスプラッシュフォームを表示するようにする必要があります(逆にDelphi 2006以前ではTForm2の所属ユニットのinitialization部で十分なのですが)。
Applicationの初期化後にまずスプラッシュフォームが生成、表示され、メインフォームが生成されて時間がかかる処理が走り、Apprication.Runでメインフォームが表示されてアクティブになることでスプラッシュフォームはインアクティブになり、OnDeactivateイベントが発生してスプラッシュフォームが消滅する、という動作の流れになります。

2008年12月10日

Microsoft Monthly Update 2008/12

今日はMicrosoftのセキュリティアップデートの日です。
MS08-070
MS08-071
MS08-072
MS08-073
MS08-074
MS08-075
MS08-076
MS08-077

2008年12月5日

Delphi 2009 Whitepapers

Marco CantuさんによるDelphi 2009 White Paperがリリースされています。
White Paper #1 Unicode: White Paper: Delphi and Unicode
White Paper #2 Language: White Paper: Using New Delphi Coding Styles and Architectures
White Paper #3 The IDE: White Paper: A Tour of Delphi 2009
White Paper #4 The VCL: White Paper: Building User Interfaces with Delphi 2009
White Paper #5 Datasnap 2009: White Paper: The New DataSnap in Delphi 2009

#2の表紙に著者名が入っていないのは単なるミスだそうです。

2008/12/16追記: #3がリリースされています。
2009/01/22追記: #4がリリースされています。
2009/01/28追記: #5がリリースされています。

2008年12月4日

OpenTools API入門

あとで読む。
Extending Delphi 2009 With OpenTools API: Getting Started

OTA(OpenTools API)はDelphi/C++BuilderのIDEとインタフェースするためのAPIで、wizardやpluginはこれを利用して作成します。

2008年12月3日

第11回エンバカデロ・デベロッパーキャンプ終了

参加者および関係者の皆さん、おつかれさまでした。
ところで会場に来てたのはMalcolm Grovesさんでしたか。
また後で更新予定…。

2008/12/06追記: ITProにMalcolm Grovesさんのインタビュー記事が。

2008/12/10再追記: セッション資料がダウンロードできるようになっています。

Delphi 2009 Handbook出版

Marco CantuさんDelphi 2009 HandbookLulu.comから出版されました。全400ページで、価格は48.50USD(約4500円)ですが、先着60名は40.50USD(これは既に終了)、CodeRage IIIの期間中(2008/12/05まで)は45.50USD(約4200円)のディスカウントが設定されています。

2008/12/04追記: ソースコードがCodeCentralからダウンロードできるようになっています。

2008/12/05再追記: Delphi 2009/C++Builder 2009/RAD Studio 2009登録ユーザはPDF eBook形式のものをCodeGearから入手できるようになりました。
Delphi 2009 Handbook PDF eBook

また「何らかの形で日本語版を出せるように交渉中」という話をデベロッパーキャンプで藤井さんがしていましたので、期待してます。

2009/05/22再追記: Marco Cantuさんによると、Amazon(US)の傘下でプリントオンデマンドを扱うCreateSpaceという会社からも入手可能になったそうです。
Delphi 2009 Handbook on Amazon.com

2011/05/04追記: cc.codegear.comのリンクをcc.embarcadero.comのものに差し替え。

2008年12月1日