![]() |
[dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Hi,
wie kann es zu einem Hint beim Kompilieren kommen, wenn ich diese eigentlich an der Stelle ausgeschaltet habe?
Code:
[dcc64 Hint] myIcTrainer.pas(33130): H2077 Value assigned to 'bugInfo' never used
[dcc64 Hint] myIcTrainer.pas(33126): H2077 Value assigned to 'bugInfo' never used [dcc64 Hint] myIcTrainer.pas(33115): H2077 Value assigned to 'bugInfo' never used [dcc64 Hint] myIcTrainer.pas(33105): H2077 Value assigned to 'bugInfo' never used [dcc64 Hint] myIcTrainer.pas(33095): H2077 Value assigned to 'bugInfo' never used [dcc64 Hint] myIcTrainer.pas(33087): H2077 Value assigned to 'bugInfo' never used
Delphi-Quellcode:
Der Hint stimmt auch nur bedingt. Ich fange in der Methode eine Exception und über diesen Integer-Wert sehe ich dann auch in Logs, welche Teile des Codes durchlaufen worden sind.
{$HINTS OFF}
bugInfo:=5; {$HINTS ON} Nur wenn es keine Exception gibt, stimmt der Hint soweit. Wäre mir ja egal, wenn ich ihn ausblenden könnte. Grüße, Philipp |
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Du musst die Hints über den gesamten Scope von bugInfo abschalten. Genau genommen geschieht die Nicht-Verwendung ja auch außerhalb deiner {$HINTS OFF/ON}-Klammer.
|
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Danke, dies war mir nicht bewusst.
|
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Jupp, die Meldungen kommen von ja erst später. (dort wo du zuweist, weiß ja noch niemand, was nachher passiert)
* entweder bei der nächsten Zuweisung, oder am Ende des Scopes, wo die Variable wegfliegt und wo jetzt erst erkannt wird, dass der letzte zugewiesene Wert nirgendwo benutzt wurde. Aber willst du nicht lieber den Fehler beheben, anstatt nur die Fehlermeldung auszublenden? Also diese Zuweisung entfernen, da sie ja eh nutzlos ist. :stupid: |
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Zitat:
Wenn man die HINTs so wegcklicken könnte wie die Warnings wäre das ein großer Fortschritt. Warnings klicke ich nämlich grundsätzlich nie weg, sondern sehe sie als Fehler an, aber insbesonderes dieses Hint würde ich im DEBUG wegclicken und in RELEASE bereinigen. |
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Standardmäßig sind in den Profilen Debug und Release auch passende DEFINEs eingetragen. (Projektoptionen > Erzeugen > Delphi-Compiler : Bedingungen)
Somit wäre es möglich die Hints im Debugmodus auszublenden. Einfach ein
Delphi-Quellcode:
oben in die Unit rein.
{$IFDEF DEBUG} {$HINTS OFF} {$ENDIF}
Da aber Viele im Delphi nur im Debug-Modus arbeiten und das Release z.B. von einem BuildTool compilieren lassen, wo sie auch noch vergessen sich die Meldungen ausgeben zu lassen und wenn doch, soe dann meistens sich garnicht ansehen ... Also da wäre es dann besser sich unter Debug noch ein weiteres Profil anzulegen und sich dort ein eigenes DEFINE einzutragen und das dafür zu nutzen. Basis * Debug * * DebugWithoutHints * Release Bei uns heißt soein Profil inzwischen DebugWithoutEurekalog, weil der Dreck mich im Debugger seit Jahren zur Verzweiflung bringt, mit all den kranken Hooks und wo man beim Fehler dann oft im Code von Eurekalog landet und dann ewig braucht, bis zur eigentlichen Fehlerstelle (falls man es bis dahin überhaupt noch schafft). Besser wäre es aber, wenn man es bei den Hints genauso machen könnte, wie mit den Warnings, also nur das abschalten, was "nervt", anstatt einfach Alles zu deaktivieren. z.B. statt
Delphi-Quellcode:
geziehlt ein
{$WARNINGS OFF}
Delphi-Quellcode:
, weil es totaler Schwachsinn ist, dass in einem Windows-Only-Programm sich ständig der Compiler über plattformabhängigen Code aufregt.
{$WARN SYMBOL_PLATFORM OFF}
Man nehme also aus der Warnung den "Code", schlage nach was dazu die Option ist, und nehme das dann, damit alle anderen wichtigen Warnungen/Hinweise weiterhin angezeigt werden. ![]() |
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Zitat:
Alle anderen Hints sehe ich ähnlich wie Warnings, als Fehler an, und versuche sie zu Beseitigen. |
AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
Joar, in diesem Fall ist es halt wirklich nervig, dass man zum auskommentierten/entIFDEFten DebugCode auch noch oben die Variable auskommentieren/entIFDEFen muß,
aber wenn man es so macht, dann ist auch diese Meldung weg. :angle: PS: Hierfür sind die neuen InlineVariablen echt eine geile Erfindung.
Delphi-Quellcode:
(bei mehreren Debugzeilen, in einem Scope, das "var" nur beim Ersten, oder noch ein "begin" und "end;" ganz links/rechts in diese Zeile, um den Scope der Variable zu begrenzen)
...
//var DebugVar := irgendwas; if DebugVar <> 0 then LogMessage(blablabla, DebugVar); ... Das ist mindestens genauso nützlich cool, wie beim
Delphi-Quellcode:
. :angle2:
for var i := 0 to 10 do Write(i);
Du kannst natürlich auch ans Ende ein
Delphi-Quellcode:
in deine Funktion schreiben, wenn die Variable dauerhaft im Funktions-Header deklariert ist, dann kommt diese Meldung auch nicht mehr, da die Variable ja benutzt wird.
if DebugVar = 0 then ;
Je nach Typ oben noch ein
Delphi-Quellcode:
rein (bei String/Interface/DynArray/Variant nicht nötig), damit es dann nicht heißt "variable nicht initialisiert", sobald aller DebugCode auskommentiert ist.
DebugVar := 0;
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 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