Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#47

AW: Record zu TStringlist hinzufügen

  Alt 13. Jun 2017, 09:38
Schau dir dieses simple Konsolenprogramm mal an und versuche die einzelnen Abschnitte zu verstehen:

Delphi-Quellcode:
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.
  Mit Zitat antworten Zitat