![]() |
AW: Record zu TStringlist hinzufügen
Zitat:
Delphi-Quellcode:
Sprite[Count].Top := Bottom;
Array habe ich schon warum dann extra eine Liste wie auch immer verwenden wenn ich doch wieder Array nutzen muss.
Delphi-Quellcode:
Sprite: TArray<TSprite>;
gruss |
AW: Record zu TStringlist hinzufügen
Zitat:
Und höre auf deine Beiträge ständig nach zu editieren, man weiß gar nicht auf was man antworten soll. Erstelle einfach einen neuen Beitrag. Das von jaenicke gezeigte
Delphi-Quellcode:
ist ein ganz normaler Zugriff auf eine Liste.
Sprite[Count].Top := Bottom;
Ja, auch Listen können mit Integer-Indizes angesprochen werden. |
AW: Record zu TStringlist hinzufügen
Zitat:
Im Falle einer Liste läuft das ganze auf eine Index-Property mit einer Getter-Methode, die das Element zurückliefert. Sinnvoll ist aus Performancegründen natürlich eher ohne die vielen Indexzugriffe zu arbeiten und das aktuelle Element in eine Variable zu packen:
Delphi-Quellcode:
Meinst du das?
var
Sprites: TObjectList<TSprite>; Sprite: TSprite; begin ... Sprite := Sprites[Count]; Sprite.Top := ...; Sprite.Def := ...; |
AW: Record zu TStringlist hinzufügen
Zitat:
gruss |
AW: Record zu TStringlist hinzufügen
Gibt es einen Grund, weshalb du keine Arrays möchtest?
Wenn man wüsste warum, könnte man vielleicht andere, bessere Lösungen ausarbeiten. |
AW: Record zu TStringlist hinzufügen
Zitat:
|
AW: Record zu TStringlist hinzufügen
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. |
AW: Record zu TStringlist hinzufügen
Zitat:
Na ja.. Warum ich das machen will hat eigentlich mit der Code Struktur zu tun. Ich möchte das ganze etwas aufgeräumt haben bevor ich den Quelltext hoch lade. Das mit den Arrays ist ein totales Kuddelmuddel. Deshalb will ich das weg haben. (Aber nicht mit aller Gewalt, wenn es nicht geht lass ich es lieber). gruss |
AW: Record zu TStringlist hinzufügen
Zitat:
gruss |
AW: Record zu TStringlist hinzufügen
Zitat:
Dann kannst du deinen Code an die Möglichkeiten der Liste anpassen, das was du machen willst um den "Salat" aufzuräumen, den du siehst, wobei von außen betrachtet jetzt nicht klar ist, was das sein könnte, aber man könnte z.B. for-Schleifen mit Index durch for each Schleifen erstzen usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz