Delphi 2010如何修改TList <record>值?
type TTest = record a,b,c:Integer end;
var List:TList<TTest>;
A:TTest;
P:Pointer;
....
....
List[10] := A; <- OK
List[10].a:=1; <- Here compiler error : Left side cannot be assined to
P:=@List[10]; <- Error: Variable requied
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写包含特定类型记录的通用TList.从大卫对这个问题的回答开始,我写了这堂课:
Type
TMERecordList<T> = Class(TList<T>)
Public Type
P = ^T;
Private
Function GetItem(Index: Integer): P;
Public
Procedure Assign(Source: TMERecordList<T>); Virtual;
Function First: P; Inline;
Function Last: P; Inline;
Property Items[Index: Integer]: P Read GetItem;
End;
Procedure TMERecordList<T>.Assign(Source: TMERecordList<T>);
Var
SrcItem: T;
Begin
Clear;
For SrcItem In Source Do
Add(SrcItem);
End;
Function TMERecordList<T>.First: P;
Begin
Result := Items[0];
End;
Function TMERecordList<T>.GetItem(Index: Integer): P;
Begin
If (Index < 0) Or (Index >= Count) Then
Raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange);
Result := @List[Index];
End; …Run Code Online (Sandbox Code Playgroud)