如何在Delphi中获取结构项

3

今天是我使用 Delphi 的第一天。

我有这样的记录:

type 
  FT_Device_Info_Node = record
    Flags         : DWord;
    DeviceType    : Dword;
    ID            : DWord;
    LocID         : DWord;
    SerialNumber  : array [0..15] of Char;
    Description   : array [0..63] of Char;
    DeviceHandle  : DWord;
  end;

稍后我只能读取数组,例如它可以工作:FT_DeviceInfoList[0].SerialNumber。但是我无法访问任何DWord项,例如FT_DeviceInfoList[0].ID是不可能的。
你能为我澄清一下吗?
编辑: 这是我想从记录中获取信息的按钮单击过程:
procedure TForm1.checkFTDIClick(Sender: TObject);
var
  i : integer;
begin
  ftStatus := FT_CreateDeviceInfoList(@dwNumDevs);
  SetLength(FT_DeviceInfoList,dwNumDevs);
  ftStatus :=  FT_GetDeviceInfoList(FT_DeviceInfoList, @dwNumDevs);
  If ftStatus <> FT_OK then ShowMessage('Error '+IntToStr(ftStatus));

  Form1.ComboBox1.Items.Clear;
  for i:=0 to dwNumDevs-1 do
  begin
    Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].Description);//works
    //Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].ID);//compilation error
  end;
  Form1.ComboBox1.ItemIndex := 0;

end;

FT件来自于FTDI库,返回的状态是OK。


你需要改进问题描述。从记录中读取字段并没有任何问题。请提供一个完整的程序来说明你的问题。 - David Heffernan
更新后的代码没有读取ID字段。 - David Heffernan
当然。我复制了那个可行的代码。我想用 Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].ID); 替换 Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].Description); - bLAZ
那些信息需要在问题中提供。我已经添加了它。如果没有这些信息,就无法找出问题所在。每当你询问一个编译错误的问题时,一定要包括产生错误的代码和精确的错误信息。 - David Heffernan
1个回答

2
您期望的代码是:

您期望的代码如下:

Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].ID);

这将导致编译错误。因为 Add 需要一个类型为 string 的参数,而你正在传递一个整数参数 DWORD

通过调用 IntToStr 将其从整数数据类型转换为字符串:

Form1.ComboBox1.Items.Add(IntToStr(FT_DeviceInfoList[i].ID));

1
不用谢。感谢您对我的评论的回复。 - David Heffernan
我怀疑@bLazy可能是C++Builder用户,因为在C++Builder中,可以直接将DWORD值传递给String,而无需调用IntToStr(),因为AnsiString和UnicodeString都实现为C++类,它们都有多个构造函数用于各种数据类型,包括与DWORD兼容的构造函数。 - Remy Lebeau
我使用旧版的Borland Delphi 7。是的,我知道,我应该找一些现代的东西。顺便问一下,也许你知道一些好用的免费Delphi IDE吗? - bLAZ
对于我的旁白问题:我现在明白,Delphi是一个IDE。现在只有Starter免费版本。有些人建议使用Lazarus,但它并不相同。 - bLAZ
1
现代Delphi没有免费的Delphi IDE。旧版Delphi有个人版本。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接