Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch (https://www.delphipraxis.net/215919-2%2A6-1-%3D0-seit-heute-rechnet-mein-programm-ab-und-zu-falsch.html)

Michael II 25. Sep 2024 11:52

(2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Hallo...
seit heute tritt bei meinem unter 11.2 kompilierten Programm ein seltsamer Fehler auf.

lenar und maxsc sind vom Typ integer, kein Multithreading. Win64 Modus/Debug Mode.
Ab und zu hat lenar nach der Zeile
lenar := 2*(maxsc+1);
den Wert 0, obschon maxsc zum Beispiel den Wert 6 hat.


Wenn ich diesen Code laufen lasse:

Delphi-Quellcode:
      lenar := 2*(maxsc+1);
      if (maxsc > 0) and (lenar = 0)
        then
        begin
          showmessage('m='+maxsc.ToString + ' l='+lenar.ToString);
          lenar := 2*(maxsc+1);
          ShowMessage( lenar.ToString );
        end;
... wird nach dem Auftreten des Problems (siehe Code oben) m=6 l=0 ausgegeben. Ich berechne dann lenar erneut und jetzt stimmt der Wert; lenar ist 14.

Da Debuggen unter Win64 wenig Spass macht, wechsle ich zu Win32. Problem bleibt.

Weder die IDE noch Eurekalog melden sich mit einem "Aber Hallo...". Windows zeigt mir an, dass mein Programm etwa 22 MB Speicher beansprucht - also praktisch nix. (Vergleich: Windows Cloud App über 500MB)

Tipps? Danke.

BlueStarHH 25. Sep 2024 12:04

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Klappt bei mit in Delphi 11.1 ohne Probleme. Hast Du mal ein neues Projekt erstellt nur mit diesem Code?

Papaschlumpf73 25. Sep 2024 12:08

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Bei der Suche nach Fehlern sollte man schon genau sein. Was ist m=6? In deinem Code gibts keine Variable m.

Michael II 25. Sep 2024 12:29

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Zitat:

Zitat von Papaschlumpf73 (Beitrag 1541502)
Bei der Suche nach Fehlern sollte man schon genau sein. Was ist m=6? In deinem Code gibts keine Variable m.

Du Code nicht gelesen? (showmessage('m='+maxsc.ToString + ' l='+lenar.ToString);) - sonst du nicht schreiben das. Du nicht hilfreich.

Michael II 25. Sep 2024 12:33

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Zitat:

Zitat von BlueStarHH (Beitrag 1541501)
Klappt bei mit in Delphi 11.1 ohne Probleme. Hast Du mal ein neues Projekt erstellt nur mit diesem Code?


Ja rechnet normalerweise gut und in neuem Projekt auch. In diesem Projekt (läuft über 20 Jahre...) wird diese Zeile zur Berechnung der Grösse eines Arrays genutzt - und plötzlich war der Array zu kurz ;-). Das Programm lief dort sicher bereits zig Millionen Mal durch - und da die berechneten Resultate mit bekannten Werten verglichen werden kann ich schreiben: Bis heute alles i.O. - strange bug.

Papaschlumpf73 25. Sep 2024 12:37

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Zitat:

Zitat von Michael II (Beitrag 1541504)
Zitat:

Zitat von Papaschlumpf73 (Beitrag 1541502)
Bei der Suche nach Fehlern sollte man schon genau sein. Was ist m=6? In deinem Code gibts keine Variable m.

Du Code nicht gelesen? (showmessage('m='+maxsc.ToString + ' l='+lenar.ToString);) - sonst du nicht schreiben das. Du nicht hilfreich.

Sorry, habe ich übersehen...

Michael II 25. Sep 2024 12:58

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Habe meine Kiste neu gestartet. Tritt nicht wieder auf. Seltsam. asm Code ok. Danke - Fall geschlossen.

AuronTLG 25. Sep 2024 13:28

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Solche Merkwürdigkeiten hatte ich gerne mal, wenn ich aus Versehen nicht initialisierte lokale Variablen verwendet habe.
Vermutlich eine dumme Frage, aber da ich den Rest des Codes nicht sehe, dennoch: Kann es vorkommen, dass maxsc beim Erreichen dieser Codestelle nicht initialisiert ist?

Uwe Raabe 25. Sep 2024 13:45

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Zitat:

Zitat von AuronTLG (Beitrag 1541509)
Kann es vorkommen, dass maxsc beim Erreichen dieser Codestelle nicht initialisiert ist?

Dann würde es im ShowMessage wohl eher nicht 6 melden.

Dennis07 25. Sep 2024 14:08

AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
 
Zitat:

Zitat von Michael II (Beitrag 1541500)
Delphi-Quellcode:
      lenar := 2*(maxsc+1);
      if (maxsc > 0) and (lenar = 0)
        then
        begin
          showmessage('m='+maxsc.ToString + ' l='+lenar.ToString);
          lenar := 2*(maxsc+1);
          ShowMessage( lenar.ToString );
        end;

Hat sehr sicher nichts mit dem Problem zu tun, aber falls es sich um Floats handelt, solltest du die Funktionen
Delphi-Quellcode:
IsZero
,
Delphi-Quellcode:
CompareValue
und
Delphi-Quellcode:
SameValue
verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Seite 1 von 2  1 2      

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