如何在Delphi中获取结构项

时间:2012-11-08 09:04:09

标签: 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库,返回状态还可以。

1 个答案:

答案 0 :(得分:2)

您想要的代码是:

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

这会导致编译错误。这是因为Add需要string类型的参数。但是你传递的是DWORD,这是一个不可或缺的参数。

通过调用IntToStr

将其从整数数据类型转换为字符串
Form1.ComboBox1.Items.Add(IntToStr(FT_DeviceInfoList[i].ID));