今天是我与德尔福的第一天。
我有这样的记录:
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库,返回状态还可以。
答案 0 :(得分:2)
您想要的代码是:
Form1.ComboBox1.Items.Add(FT_DeviceInfoList[i].ID);
这会导致编译错误。这是因为Add
需要string
类型的参数。但是你传递的是DWORD
,这是一个不可或缺的参数。
通过调用IntToStr
:
Form1.ComboBox1.Items.Add(IntToStr(FT_DeviceInfoList[i].ID));