Einzelnen Beitrag anzeigen

Taweluki

Registriert seit: 26. Nov 2004
2 Beiträge
 
#5

Re: Panels dynamisch erzeugen -> Ungültige Zeigeroperatio

  Alt 26. Nov 2004, 13:10
TObjectList ist die beste Wahl, sonst macht man noch Fehler wie den folgenden:

Zitat von mika:
Code:
    max := Length(myLKW);
    For I := max Downto 0 do
    begin
      myLKW[i].myDestroy;
      sleep(100);
    end;
Length() liefert die Anzahl der Elemente, diese ist bei offenen Arrays aber um eins größer als der höchste zulässige Index (anders als bei den mit Index 1 beginnenden Strings, wo Length den Index des letzten Zeichens liefert). Mit myLKW[Lenght(myLKW)] greifst du fröhlich auf uninitialisierten bzw. ungültigen Speicher zu. Ersetze Length(myLKW) durch High(myLKW) und gut ist.

Und die Variable max kannst du dir eigentlich auch sparen, der Compiler optimiert die höchstwahrscheinlich sowieso weg. for i := High() downto 0 do... ist besser lesbar als for i := max downto 0 do..., weil man nicht erst nachsehen muss, was "max" eigentlich ist. Gilt natürlich nicht, wenn die Berechnung von max kompliziert ist oder max öfter als einmal benötigt wird.
  Mit Zitat antworten Zitat