相关疑难解决方法(0)

如何修改TList <record>值?

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)

delphi generics

11
推荐指数
2
解决办法
4129
查看次数

编写记录的通用TList

我正在尝试编写包含特定类型记录的通用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)

delphi generics collections

6
推荐指数
1
解决办法
1704
查看次数

标签 统计

delphi ×2

generics ×2

collections ×1