Hi ark,
mal was grundsätzliches zu Listen. Das ist eine Datenstruktur, mit der Du mehrere (viele) Objekte verwalten kannst. Dazu unterstützt die Liste im Prinzip diese wichtigen Funktionen:
- Liste.Add(obj) - fügt das angegebene Objekt am Ende der Liste hinzu
- Liste.Insert(idx, obj) - fügt das angegebene Objekt an der angegebenen Position ein und verschiebt alle nachfolgenden Objekte in der Liste um eine Position nach hinten
- Liste.Delete(idx) - löscht das Objekt mit dem angegebenen Index aus der Liste und verschiebt alle nachfolgendenen Objekte um eine Position nach vorne
- Liste.Remove(obj) - löscht das angegebene Objekt aus der Liste und verschiebt alle nachfolgendenen Objekte um eine Position nach vorne
- Liste.Count - liefert dir die Anzahl der Objekte in der Liste
- Liste.Items[idx] - liefert dir das Objekt mit dem angegebenen Index zurück
Hieraus kannst Du Dir dann deine eigentlichen Funktionen zusammenbasteln. Zum Beispiel würde ein Hinzufügen so aussehen:
Delphi-Quellcode:
var uhr: TBewegteUhr;
begin
uhr := TBewegteUhr.Create(10, 10, 75);
uhr.Kennt(Main); // <-- hier noch die weiteren Funktionen einfügen,
// die Du brauchst, um die Uhr zu initialisieren
Liste.Add(uhr);
end;
Wenn Du alle Uhren bewegen willst, geht das im Prinzip so:
Delphi-Quellcode:
var i: Integer;
uhr: TBewegteUhr;
begin
for i:=0 to Liste.Count-1 do begin // ganz wichtig, immer von 0 bis count-1 zählen
uhr := TBewegteUhr(Liste[i]); // Liste[i] ist das gleiche wie Liste.Items[i], aber wir sind halt faul...
// hier mit der Uhr irgendwas machen
end;
end;
Und das Löschen geht dann so:
Delphi-Quellcode:
var uhr: TBewegteUhr;
begin
uhr := TBewegteUhr(Liste[idx]);
Liste.Remove(uhr); // Liste.Delete(idx) wäre hier genau das gleiche
FreeAndNil(uhr); // gibt den Speicher von uhr wieder frei
end;
Soweit verständlich?
Gruß,
SirTwist