У меня есть код Delphi 2005, который я использую для получения имен полей таблицы базы данных.
Он без проблем работает на 32-битных машинах (Windows XP, Windows Vista, Windows 7).
Однако он не возвращает имена полей при запуске на 64-битной машине (Windows Vista или Windows 7).
Код выглядит так:
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»
Когда я перекомпилирую с Delphi 2006 или Delphi 2007, проблема исчезает.
(Я использую Firebird 2.5)
Я хочу исправить это, не обновляя программу до более поздней версии Delphi.
Я также хотел бы понять, почему возникает проблема - почему программа по-другому ведет себя в 64-битной Windows.
Не могли бы вы дать мне какой-нибудь совет?