type
TDeviceInfo = record
id: Integer;
devName: string;
end; //装备信息
TDevInfoPack = packed record
body: PChar; //array[0..3] of TDeviceInfo;
len: Integer;
end;var
Info1,Info2,Info3: TDeviceInfo;
devInfo: TDevInfoPack;
//devInfo.body 是一个结构体数组,但由于长度不确定,所以改用了PChar类型,请问如何将Info1,Info2,Info3赋值到PChar类型的body中?请各位大侠指教
TDeviceInfo = record
id: Integer;
devName: string;
end; //装备信息
TDevInfoPack = packed record
body: PChar; //array[0..3] of TDeviceInfo;
len: Integer;
end;var
Info1,Info2,Info3: TDeviceInfo;
devInfo: TDevInfoPack;
//devInfo.body 是一个结构体数组,但由于长度不确定,所以改用了PChar类型,请问如何将Info1,Info2,Info3赋值到PChar类型的body中?请各位大侠指教
TDeviceInfo = class
public
id: Integer;
devName: string;
end;var
i: integer;
adev: TDeviceInfo;
Info1,Info2,Info3: TDeviceInfo;
devInfo: TList;begin
devinfo := TList.create;
info1:= TDeviceInfo.Create;
info1.id := xx;
info1.devname = 'xxx';
devinfo.add(info1);
//info2
....
//info3
....
//使用示例
for i:=0 to devInfo.length-1 do
begin
adev:= (TDeviceInfo) devinfo[I];
......
end;
devinfo.free; //最后使用完了,要释放掉。
end;
再定义该 结构体的动态数组,
使用时,可以动态定义动态数组的长度。
type
TDeviceInfo = record
id: Integer;
devName: string;
end;var A:array of TDeviceInfo; // 声明动态数组
begin
Rec:=100; // 动态数组长度
SetLength (A, Rec); // 设置的动态数组长度
A[0].id:=5; // 给数组中的结构体赋值
A[0].devName:='MyStr'; // 给数组中的结构体赋值
end;
格式可以是xml/json/ini
TDeviceInfo = record
id: Integer;
devName: string;
end;
var A:array of TDeviceInfo; // 声明动态数组
begin
// 固名思议是:动态数组,设置也应该是动态才合理
SetLength (A, Length(A)+1); // 设置的动态数组长度
A[High(A)].id:=5; // 给数组中的结构体赋值
A[High(A)].devName:='MyStr'; // 给数组中的结构体赋值
end;