データベーステーブルのフィールド名を取得するために使用するDelphi2005コードがあります。
32ビットマシン(Windows XP、Windows Vista、Windows 7)では問題なく動作します。
ただし、64ビットマシン(WindowsVistaまたはWindows7)で実行すると、フィールド名は返されません。
コードは次のようになります。
uses Db, SQLExpr;
procedure TForm1.ShowFieldNames(SQLConnection: TSQLConnection;
FieldNames: TStringList);
var FieldIndex: Integer;
begin
SQLConnection.GetFieldNames('TABLENAME', FieldNames);
ListBox.Items.Add('Field Count = ' + IntToStr(FieldNames.Count));
for FieldIndex:=0 to FieldNames.Count - 1 do
ListBox.Items.Add('FieldName = ' + FieldNames[FieldIndex]);
end;
32ビットマシンでは、これはゼロ以外のカウントを示し、フィールド名を一覧表示します。64ビットマシンでは、これは「フィールドカウント=0」を表示します</p>
Delphi2006またはDelphi2007で再コンパイルすると、問題は解決します。
(Firebird 2.5を使用しています)
プログラムをDelphiの新しいバージョンにアップグレードせずにこれを修正したいと思います。
また、問題が発生している理由、つまり64ビットWindowsでプログラムの動作が異なる理由についても理解したいと思います。
アドバイスをお願いします。