2

我有用于检索数据库表字段名称的 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 位机器上,显示“Field Count = 0”</p>

当我用 Delphi 2006 或 Delphi 2007 重新编译时,问题就消失了。

(我使用的是火鸟 2.5)

我想解决这个问题,而不必将程序升级到更高版本的 Delphi。

我还想了解为什么会出现问题——为什么程序在 64 位 Windows 上表现不同。

你能给我任何建议吗?

4

1 回答 1

1

使用查询:

SELECT RDB$FIELD_NAME FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME='TABLENAME';  

然后修剪返回的结果给我字段名称,它确实在 64 位机器上工作。

这并不能解释为什么程序在 64 位机器上运行时工作方式不同,但它确实给了我一个可行的解决方案。

于 2011-08-31T12:09:36.783 回答