program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils,
Generics.Collections;
type
TSprite =
class
Top, Left, Right, Bottom: Integer;
function ToString:
string;
end;
TSprites = TObjectList<TSprite>;
{ TSprite }
function TSprite.ToString:
string;
begin
Result := '
Sprite-Werte' + sLineBreak;
Result := Result + '
Top: ' + IntToStr(Top) + '
Left: ' + IntToStr(Left) + '
Right: ' + IntToStr(Right) + '
Bottom: ' +IntToStr(Bottom);
end;
procedure Main;
var
SingleSprite: TSprite;
Sprites: TSprites;
I: Integer;
begin
Sprites := TSprites.Create;
try
Sprites.Add(TSprite.Create);
Sprites.Add(TSprite.Create);
Sprites.Add(TSprite.Create);
Writeln('
Sprites.Count: ' + IntToStr(Sprites.Count));
// Zugriff auf Listenelement - Variante 1
Sprites[0].Top := 1;
Sprites[0].Left := 2;
Sprites[0].Right := 3;
Sprites[0].Bottom := 4;
// Zugriff auf Listenelement - Variante 2
Sprites.Items[1].Top := 4;
Sprites.Items[1].Left := 6;
Sprites.Items[1].Right := 7;
Sprites.Items[1].Bottom := 8;
// Zugriff auf Listenelement - Variante 3
SingleSprite := Sprites.Items[2];
SingleSprite.Top := 9;
SingleSprite.Left := 10;
SingleSprite.Right := 11;
SingleSprite.Bottom := 12;
Writeln;
Writeln('
Iterieren durch die Liste mit Index:');
for I := 0
to Sprites.Count - 1
do
begin
Writeln(IntToStr(I) + '
. ' + Sprites.Items[I].ToString)
end;
Writeln;
Writeln('
Iterieren durch die Liste mit for-in:');
for SingleSprite
in Sprites
do
begin
Writeln(SingleSprite.ToString)
end;
Writeln;
Writeln('
Löschen des mittleren Elements aus Sprites!');
Sprites.Delete(1);
Writeln('
Sprites.Count: ' + IntToStr(Sprites.Count));
Writeln;
Writeln('
Entfernen des ersten Elements aus Sprites!');
SingleSprite := Sprites.First;
Sprites.Remove(SingleSprite);
Writeln('
Sprites.Count: ' + IntToStr(Sprites.Count));
finally
Sprites.Free;
end;
end;
begin
try
Main;
Readln;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
end.