Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Integer Overflow (https://www.delphipraxis.net/140470-integer-overflow.html)

RedShakal 18. Sep 2009 20:14


Integer Overflow
 
Hallo ich hab ne Frage. Ich hab ne Schleife gebastelt in ner Combobox die immer dann aufgerufen werden soll wenn man die Combobox ändert.

Delphi-Quellcode:
if Mapauswahl.ItemIndex = 0 then
    begin
      Maplist.Clear;
      Mapliste := Downloadstatus.Get('http://www.redshakal.de/kknd/login/maplist/standard.php');

      if Length(Mapliste) > 0 then
        begin
          StrArr := Explode('|', Mapliste);
        end;

      For i := 0 to 13 do
        begin
          LI:= Maplist.Items.Add;
          LI.Caption:= StrArr[i*3];
          LI.SubItems.Add(StrArr[i*3+1]);
          LI.SubItems.Add(StrArr[i*3+2]);
        end;
    end;

  if Mapauswahl.ItemIndex = 1 then
    begin
      Maplist.Clear;
      Mapliste := Downloadstatus.Get('http://www.redshakal.de/kknd/login/maplist/custom.php');

      if Length(Mapliste) > 0 then
        begin
          StrArr := Explode('|', Mapliste);
        end;

      For i := 0 to 5 do
        begin
          LI:= Maplist.Items.Add;
          LI.Caption:= StrArr[i*3];
          LI.SubItems.Add(StrArr[i*3+1]);
          LI.SubItems.Add(StrArr[i*3+2]);
        end;
    end;
Wenn ich diesen Code ausführe, bekomme ich einen Integer Overflow. Was mach ich da falsch?

hoika 18. Sep 2009 20:28

Re: Integer Overflow
 
Hallo,

wo denn genau ?


Heiko

Wolfgang Mix 18. Sep 2009 21:11

Re: Integer Overflow
 
Kannst Du den Fehler mit Auskommentieren von Befehlen eingrenzen?

Gruß

Wolfgang

himitsu 18. Sep 2009 21:23

Re: Integer Overflow
 
Zitat:

Zitat von Wolfgang Mix
Kannst Du den Fehler mit Auskommentieren von Befehlen eingrenzen?

garnicht nötig

F9 auf die erste Zeile
dann das Programm starten
und sobald er da anhält
mit F8 Zeile für Zeile weise ... bis es knallt

Uwe Raabe 18. Sep 2009 21:41

Re: Integer Overflow
 
Ich vermute mal, der Integer-Overflow ist ein RangeError, der genau dann auftritt, wen StrArr nicht genügend Elemente beinhaltet.

Wolfgang Mix 18. Sep 2009 21:43

Re: Integer Overflow
 
Ich weiss :-)

Gruß

Wolfgang

Wolfgang Mix 18. Sep 2009 21:54

Re: Integer Overflow
 
@himitsu

Ich versuche, meinen Probanden einzuhämmern, daß ein Programm, egal in welcher Programmiersprache,
immer laufen muß und Fehler sofort aufgespürt werden müssen. Späteres Aufspüren von Fehlern führt immer zu Zeitverlust.

Beide Fehlersuchmethoden führen zum Ziel. Besser aber ist es, Fehler sofort auszumerzen.

Gruß

Wolfgang

himitsu 18. Sep 2009 22:59

Re: Integer Overflow
 
Dagegen ist nichts einzuwenden, aber richtiges Debuggen ist meißt effektiver, als Bruteforce-mäßiges Probieren.

In diesem Fall ist dein Probieren gleich
- Zeile auskommentieren
LOOP
- Programm laufen lassen
- wenn abstürzt, dann mehr/andere Zeilen auskommentieren und weiter bei LOOP
- wenn nicht mehr abstürzt, eventuell Zeilen wieder aktivieren, um den Fehler einzugrenzen und weiter bei LOOP
- so lange, bis nur noch die fehlerverursachenden Zeilen auskommentiert sind



Debuggen geht hier einfach, da das Problem anscheinend immer eintritt.
Also debuggt man einfach Befehl für Befehl, schaut sich nebenbei eventuell noch ein paar Variablen an, ob die auch die richtigen Werte haben.
Wenn es knallt, dann war der zuletzt ausgeführte Befehl der Auslöser
und nun muß man nur noch den Grund erkennen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 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