請問RECORD裏能不能用動態數組?
TPluInfo = record
NM_PLU: String[30]; // 商品名稱
NM_SPEC: String[12]; // 規格
DT_PREIN: String[8]; // 預定進貨日期
TM_PREIN: String[6]; // 預定進貨時間
PR_NOWSALE: Integer; // 售價
ORDMIN: Integer; // 商品最小訂購量
ORDMAX: Integer; // 商品最大訂購量
CD_LINK1: array of String[7]; // LINK-CODE1
DetailFlag: Boolean; // 一二訂資料取得標誌
end;
這樣定義好像會出現非法訪問的錯誤!
TPluInfo = record
NM_PLU: String[30]; // 商品名稱
NM_SPEC: String[12]; // 規格
DT_PREIN: String[8]; // 預定進貨日期
TM_PREIN: String[6]; // 預定進貨時間
PR_NOWSALE: Integer; // 售價
ORDMIN: Integer; // 商品最小訂購量
ORDMAX: Integer; // 商品最大訂購量
CD_LINK1: array of String[7]; // LINK-CODE1
DetailFlag: Boolean; // 一二訂資料取得標誌
end;
這樣定義好像會出現非法訪問的錯誤!
什么意思?
改设计比钻语法好。
不合題意!
要求是一個動態數組!
每個元素都是長度爲7的字符串!
我的內存是用NEW分配的!而已可能會有連續的多個記錄!
這時可能會出現前面的記錄覆蓋了後面記錄的部分資料問題!
內存溢出!
楼主的意思是在该记录里定义的CD_LINK1是个动态数组,每一串存放7个字符的不定数量的动态字符串数组。要注意的是在使用该记录类时,必须给CD_LINK1分配内存,指定大小。SetLength,否则将导致内存访问失败
TPointInfo = ^TPluInfo;
TPluInfo = record
NM_PLU: String[30]; // 商品名稱
NM_SPEC: String[12]; // 規格
DT_PREIN: String[8]; // 預定進貨日期
TM_PREIN: String[6]; // 預定進貨時間
PR_NOWSALE: Integer; // 售價
ORDMIN: Integer; // 商品最小訂購量
ORDMAX: Integer; // 商品最大訂購量
CD_LINK1: array of String[7]; // LINK-CODE1
DetailFlag: Boolean; // 一二訂資料取得標誌
end;procedure TForm1.Button1Click(Sender: TObject);
var MyList: TList;
PInfo: TPointInfo;
begin
MyList := TList.Create;
try
New(PInfo);
PInfo.NM_PLU := '123...';
{...}
PInfo.DetailFlag := false;
MyList.Add(PInfo); //放入
{...}
PInfo := MyList.Last;
showMessage(PInfo.NM_PLU); //表示
finally
MyList.Free;
end;
end;