Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fehlfunktion (https://www.delphipraxis.net/216725-fehlfunktion.html)

ts-d 18. Feb 2025 09:30


Fehlfunktion
 
--- erledigt ---


Hallo,

ich schreibe

Code:
if Suchkriterium <> '7' then
  k := k + 1;
und der Debugger arbeitet bei dem Wert '777' nicht die drunter stehende Anweisung ab, sondern überspringt diese Zeile!

Das ist doch ganz unmöglich!!!

Ich vermute einen Dateidefekt. Weiß jemand, wie man das wieder hin bekommt?


Anderes Symptom: Ich setze einen Haltepunkt bei

Code:
k := 0;
und der Debugger überspringt bei Einzelschritt die Zeile einfach, obwohl vor dem Start der Code neu compiliert worden war.

In dieser Zeile läßt sich auch kein Haltepunkt setzen. Er ist rot durchgestrichen nach dem Setzen.

himitsu 18. Feb 2025 09:41

AW: Fehlfunktion
 
Sieht es nur so aus, als wenn er das
Delphi-Quellcode:
k := k +
ausführt, oder wird es wirklich ausgeführt?

Und zu
Delphi-Quellcode:
k := 0;
.
Sag bitte nicht, dass man im Compilerlog sowas lesen kann, wie "H2077 Auf ... zugewiesener Wert wird niemals benutzt" :stupid:

jaenicke 18. Feb 2025 09:44

AW: Fehlfunktion
 
Da werden DCU-Dateien verwendet, die nicht zum Quelltext passen. Meistens liegt das an ungünstig gesetzten Such- und/oder Ausgabepfaden oder an nicht eindeutig benannten Units (z.B. Klassiker wie Main.pas in mehreren Projekten).

Das kannst du auch leicht prüfen, indem du vor und nach der Anweisung mit ShowMessage einfach mal den Wert von k ausgeben lässt. Vermutlich kommen diese MessageBoxen nicht, weil nicht der aktuelle Code verwendet wird.

Wenn der Dateiname nicht eindeutig ist, musst du die Unit zuerst umbenennen, damit er das ist. Vermutlich ist das Problem dann schon behoben. Am einfachsten kannst du ansonsten nach <Unitname>.dcu überall auf der Festplatte suchen und alle diese Dateien löschen. Das geht z.B. mit everything sehr schnell. (Das Tool ist ohnehin ein Muss auf jedem Rechner.)

ts-d 18. Feb 2025 09:48

AW: Fehlfunktion
 
beim Weiterklicken im Debugger (Schritt-Modus) wird die Zeile übersprungen, d. h. es sieht so aus, wenn er die ganze Zeile einfach ignoriert.

Zu Deinem Hinweis:
Ja, Du hast Recht, da steht
[DCC Hinweis] MAIN.pas(4835): H2077 Auf 'k' zugewiesener Wert wird niemals benutzt

ts-d 18. Feb 2025 09:53

AW: Fehlfunktion
 
witzig, ich habe jetzt noch ein paar Prüfoptionen in den Optionen verschärft und jetzt scheint es zu funktionieren

Die Main.pas gibt es öfter, aber es gibt im Projekt nur Bezüge auf den Entwicklungsordner. Aber Löschen hatte auch nichts gebracht.

Es war schon merkwürdig, daß der Debugger wirklich so getan hat, als gäbe es die Zeile gar nicht. Beim schrittweisen Ausführen des Code hat er echt die Zeile ignoriert!!!

jaenicke 18. Feb 2025 12:14

AW: Fehlfunktion
 
Zitat:

Zitat von ts-d (Beitrag 1546320)
Ja, Du hast Recht, da steht
[DCC Hinweis] MAIN.pas(4835): H2077 Auf 'k' zugewiesener Wert wird niemals benutzt

Dann wird die Zeile einfach wegoptimiert. Der Wert wird ja nirgends verwendet, so dass die Zeile keinerlei Auswirkungen hätte.

Darum habe ich geschrieben, dass du ShowMessage dazupacken sollst. Dann wird der Wert verwendet. Daran siehst du dann beides, einerseits, dass der aktzuelle Quelltext verwendet wird, andererseits ob der Wert sich ändert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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-2025 by Thomas Breitkreuz