type
PMyRec = ^TMyRec;
TMyRec = packed record
a,b,c: string;
end;
TMyList = class(TList) public
property Items[Index: Integer]: PMyRec read ....
procedure Add(Item: PMyRec); overload;
procedure Add(a,b,c: string); overload;
end;第二个Add的实现方法怎么写?
我这么写:
procedure TMyList.Add(a,b,c: string);
var
rec: TMyRec;
begin
rec.a:=a;
rec.b:=b;
rec.c:=c;
Add(@rec);
end; 但是在使用Items[Index]读取的时候出错了!
PMyRec = ^TMyRec;
TMyRec = packed record
a,b,c: string;
end;
TMyList = class(TList) public
property Items[Index: Integer]: PMyRec read ....
procedure Add(Item: PMyRec); overload;
procedure Add(a,b,c: string); overload;
end;第二个Add的实现方法怎么写?
我这么写:
procedure TMyList.Add(a,b,c: string);
var
rec: TMyRec;
begin
rec.a:=a;
rec.b:=b;
rec.c:=c;
Add(@rec);
end; 但是在使用Items[Index]读取的时候出错了!
var
rec: PMyRec;
begin
new(rec);
rec^.a:=a;
rec^.b:=b;
rec^.c:=c;
Add(rec);
end;
不过你的方法我看不太明白,这个方法可以运行通过么,用个函数就可以阿
编译没问题给Rec:TMyRec赋值就自动分配内存 只是出了Add函数rec被释放了而已