Warum willst du unbedingt it records und Zeigern arbeiten?
Alki hat in der CodeLib ein
ObjectList template platziert.
Damit ist folgendes möglich:
Eine Klasse, die dein Item darstellt (die Liste wird durch ein paar Extra runden des Compilers angelegt
):
Delphi-Quellcode:
uses Contnrs;
type
TTest = class
private
fSomeValue: Integer;
public
property SomeValue: Integer read fSomeValue;
procedure DoSomething;
constructor Create(aSomeValue :Integer); virtual;
end;
_LIST_ITEM_ = TTest;
{$DEFINE TYPED_LIST_TEMPLATE}
{$INCLUDE ObjList_Tmpl.pas}
TTestList = _LIST_;
implementation
{$INCLUDE ObjList_Tmpl.pas}
{ TestClass }
constructor TTest.Create(aSomeValue: Integer);
begin
fSomeValue := aSomeValue;
end;
procedure TTest.DoSomething;
begin
Writeln(SomeValue);
end;
Die Verwendung ist absolut easy.
Delphi-Quellcode:
procedure TTestUsage.DoSomething;
var
List : TTestList;
Item : TTest;
Counter : Integer;
begin
List := TTestList.Create();
try
for Counter := 1 to 100 do
begin
Item := TTest.Create(Counter);
List.Add(Item);
end;
for Counter := 0 to List.Count do
begin
List[Counter].DoSomething(); // ohne type cast :-)
end;
finally
List.Free();
end;
end;
Ohne ^, @, Typecasts, anderes Gefriemel...
(Die Typecasts sind ja schon im Template versteckt
)