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中?請各位大俠指教。。。
uj5u.com熱心網友回復:
最好用一個List來解決這個問題。type
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;
uj5u.com熱心網友回復:
可以先定義一個結構體,再定義該 結構體的動態陣列,
使用時,可以動態定義動態陣列的長度。
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;
uj5u.com熱心網友回復:
一個大字串(最多2G)搞定!格式可以是xml/json/ini
uj5u.com熱心網友回復:
typeTDeviceInfo = 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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88767.html
標籤:語言基礎/算法/系統設計
下一篇:求翻譯成D。。卸載DLL
