eg:
type
tff=record
dd:integer;
dda:string;
end;
ff=^tff;
proceudre ddddddd;
var
rr:ff;
begin
new(rr);
rr^.dd:=100;
rr^.dda:='a12345';
end;如果rr的长度要求是100→有100个ff
要怎么作啊?
type
tff=record
dd:integer;
dda:string;
end;
ff=^tff;
proceudre ddddddd;
var
rr:ff;
begin
new(rr);
rr^.dd:=100;
rr^.dda:='a12345';
end;如果rr的长度要求是100→有100个ff
要怎么作啊?
var
rr:array[0..99] of ff;
i:integer
begin
for i:=0 to 99 do
begin
new(rr[i]);
rr[i]^.dd:=100;
rr[i]^.dda:='a12345';
end;
end;
记得最后循环释放
new(rr);
getmem(rr,2*sizeof(ff));
rr^.dd:=100;
rr^.dda:='a12345';
inc(rr);
rr^.dd:=200;
rr^.dda:='111119';
像这样就可以了!
procedure test;
var
arrff: array[1..n] of ff;
i: integer;
begin
for i:= 1 to n do
begin
new(arrff[i]);
arrff^.dd:= 100;
arrff^.dda:= 'string';
dispose(arrff[i]);
end;
end;
begin
new(arrff[i]);
arrff^.dd:= 100;
arrff^.dda:= 'string';
end;
用完后再释放
var Data : array of Tff;
i : integer;
begin
Setlength(Data,100)
for i := low(Data) to High(Data) do
begin
Data[i].dd := i;
Data[i].dda := inttostr(i);
end;end
释放的时候 Data := nil 就行了!
完全不用指针的! 呵呵! 好用的!
const
FFCOUNT=100;type
tff=record
dd:integer;
dda:string;
end;
ff=^tff;var
rr:array of ff;
i: Integer;
begin
SetLength(rr, FFCOUNT);
for i:=Low(rr) to High(rr) do
begin
rr[i]:=AllocMem( SizeOf(tff) );
rr[i]^.dd:=100;
rr[i]^.dda:='a12345';
end;
for i:=Low(rr) to High(rr) do
FreeMem(rr[i]);
ShowMessage('finish...');
end;我的代码经过调试 绝对可行 完全实现了你的要求
COUNT: integer;
var
Arrff: array of ff;
i: integer;
begin
SetLength(Arrff, COUNT);
for i := Low(Arrff) to High(Arrff) do begin
New(Arrff[i]);
arrff^.dd:= 100;
arrff^.dda:= 'string';
Dispose(Arrff[i]);
end;
end;