Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Laufzeitfehler: Delphi5 vs. Delphi2009 "was hab ich falsch?" (https://www.delphipraxis.net/135539-laufzeitfehler-delphi5-vs-delphi2009-hab-ich-falsch.html)

mcmichael 12. Jun 2009 20:43


Laufzeitfehler: Delphi5 vs. Delphi2009 "was hab ich fal
 
Hallo Experten,

ich hatte einen Fehler im Programm. Delphi 2009 war zur Ursache trotz Laufzeitfehler:Überlaufprüfung=true
recht schweigsam. Aber das Programm stürzte ab. Gelegentlich.

Nach der Übersetzung in Delphi5 kam der Hinweis zur Laufzeit:
Der Index der Liste überschreitet das Maximum (0)

Schuld war eine Listbox die ich auf das letzte Element scrolle,
mit dem Code der jetzt auskommentiert ist, seit heute
über Perform(WM_VSCROLL,SB_BOTTOM,0).
Keine Fehler mehr.

Delphi-Quellcode:
ObserverScreen.ListBox_inputs.Items.Add(msg);
ObserverScreen.ListBox_inputs.Perform(WM_VSCROLL,SB_BOTTOM,0);
//ObserverScreen.ListBox_inputs.Itemindex:=ObserverScreen.ListBox_inputs.Items.Count-1;
//ObserverScreen.ListBox_inputs.Selected[ObserverScreen.ListBox_inputs.Items.Count-1]:=false;

Schön so.
Aber ich verstehe es nicht.
Weder wo der Fehler lag, noch warum Delphi 2009 es nicht gepeilt hat.

Hat jemand eine Idee?

Mysticus 16. Jun 2009 19:09

Re: Laufzeitfehler: Delphi5 vs. Delphi2009 "was hab ich
 
Naja, die Fehlermeldung sagt eigentlich alles Wichtige. Wenn ListBox_inputs leer ist, dann hat sie Count = 0 Einträge. (Count - 1) ergibt also -1 (bzw. $FFFFFFFF in interner Repräsentation). Was passiert, wenn Du damit indizierst, ist undefiniert, d. h. das Programm steckt es vielleicht ohne Probleme weg, muss es aber nicht. Es gibt dann ja auch nichts zu selektieren.

So wär's richtig:

Delphi-Quellcode:
if ObserverScreen.ListBox_inputs.Items.Count > 0 then
  ObserverScreen.ListBox_inputs.Selected[ObserverScreen.ListBox_inputs.Items.Count-1]:=false;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz