![]() |
(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:
... 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.
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; 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. |
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?
|
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.
|
AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
Zitat:
|
AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
Zitat:
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. |
AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
Zitat:
|
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.
|
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? |
AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
Zitat:
|
AW: (2*6+1)=0 - Seit heute rechnet mein Programm ab und zu falsch
Zitat:
Delphi-Quellcode:
,
IsZero
Delphi-Quellcode:
und
CompareValue
Delphi-Quellcode:
verwenden.
SameValue
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr. |
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