Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Objekt TList- ich versteh kein Wort!

  Alt 28. Okt 2008, 21:30
Zitat von ark4869:
Naja, in der Buchseite sind halt "Befehle" von TList, aber da steht nix, wie das integriert werden soll.Da steht dann zum Biespiel "Letztes Element [zeilensprung] Liste.Items[Liste.Count-1]" und das wird mir auch schon nciht klar und unter count würd ich jetzt was anderes verstehen.
Mit Liste.Count bekomme ich die Anzahl der Listenelemente. Die Listenelemente werden aber im Index von 0 an gezählt.
1. Element => Liste.Items[ 0 ]
2. Element => Liste.Items[ 1 ]
3. Element => Liste.Items[ 2 ]
4. Element => Liste.Items[ 3 ]
5. Element => Liste.Items[ 4 ]
Wenn ich diese Liste nun abfrage mit Liste.Count bekomme ich als Ergebnis 5, klar ich habe ja auch 5 Elemente.
Das letzte Element kann ich aber nur mit Liste.Items[ 4 ], und 4 ist nun mal 5-1 also Liste.Count - 1.
Zitat von ark4869:
Oder dein Erzeugen das steht da garnicht so. (glaub ich...?)
Da steht

Anhängen eines neuen Gebäudeobjektes:
Liste.Add(Haus)
Eigentlich steht bei mir das auch ...
Aber wenn ich ein Objekt der Liste hinzufügen möchte, dann muss ich das Objekt ja auch vorher erzeugen, oder?
Delphi-Quellcode:
procedure TMain.BtErzeugenClick(Sender: TObject);
var
  idx : integer;
  tmpUhr : TBewegteUhr;
begin
  // Objekt erzeugen und an die Liste hängen
  // idx hat dann die Position in der Liste

  // Statt in einem Rutsch ... wie hier ...
  // idx := Liste.Add( TBewegteUhr.Create (Main.Width div 2, Main.Height div 2, 75) );

  // machen wir das nun in 2 Schritten
  // erst mal eine Uhr erzeugen
  tmpUhr := TBewegteUhr.Create (Main.Width div 2, Main.Height div 2, 75);

  // und dann an die Liste hängen
  idx := Liste.Add( tmpUhr );

  // Liste.Items[ idx ] ist vom Typ Pointer, zeigt also nur irgendwo hin
  // TBewegteUhr( Pointer ) sagt dem Programm, wie die Informationen an der Stelle
  // vom Pointer zu interpretieren sind

  TBewegteUhr( Liste.Items[ idx ] ).Kennt(Main);
  TBewegteUhr( Liste.Items[ idx ] ).Zeigen;
end;
Zitat von ark4869:
Im Buch gehts drüberhinaus um ein Projekt was wir nie gemacht haben. Aber da steht nicht wie bei dir Haus.create.

Was mich wundert bei deinem Vernichten war dass du da 0 in den eckigen klammern stehen hast... Da steht ja nicht dass das auf 0 runtermachen soll, kein index:= index-1 oder so
Ich lösche immer das erste Element in der Liste (das ist leider nun mal Liste.Items[ 0 ]) und zwar so lange wie Liste.Count > 0 ist (also so lange, wie sich in der Liste auch noch Elemente befinden).

Die Buchseite ist eigentlich nicht so schlecht, aber auch hier wird wie überall Transferleistung benötigt.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat