Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used (https://www.delphipraxis.net/206773-%5Bdcc64-hint%5D-h2077-value-assigned-xyz-never-used.html)

philipp.hofmann 28. Jan 2021 09:23

[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:
  {$HINTS OFF}
    bugInfo:=5;
  {$HINTS ON}
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.
Nur wenn es keine Exception gibt, stimmt der Hint soweit. Wäre mir ja egal, wenn ich ihn ausblenden könnte.

Grüße, Philipp

Uwe Raabe 28. Jan 2021 10:25

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.

philipp.hofmann 28. Jan 2021 12:00

AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
 
Danke, dies war mir nicht bewusst.

himitsu 28. Jan 2021 15:55

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:

Rollo62 28. Jan 2021 16:09

AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
 
Zitat:

Zitat von himitsu (Beitrag 1481697)
Aber willst du nicht lieber den Fehler beheben, anstatt nur die Fehlermeldung auszublenden?

Ich sehe gerade diese Meldung auch als sehr nervig, weil ich oft Test-Code einbaue der dann immer mit so einer blöden Meldung während der Entwicklung hochpoppt.

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.

himitsu 28. Jan 2021 17:08

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:
{$IFDEF DEBUG} {$HINTS OFF} {$ENDIF}
oben in die Unit rein.

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:
{$WARNINGS OFF}
geziehlt ein
Delphi-Quellcode:
{$WARN SYMBOL_PLATFORM OFF}
, weil es totaler Schwachsinn ist, dass in einem Windows-Only-Programm sich ständig der Compiler über plattformabhängigen Code aufregt.
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.
http://docwiki.embarcadero.com/RADSt...sages_(Delphi)

Rollo62 28. Jan 2021 17:15

AW: [dcc64 Hint] - H2077 Value assigned to 'XYZ' never used
 
Zitat:

Zitat von himitsu (Beitrag 1481702)
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

Genau das meine ich, denn mich nervt nur das Eine, siehe oben.
Alle anderen Hints sehe ich ähnlich wie Warnings, als Fehler an,
und versuche sie zu Beseitigen.

himitsu 28. Jan 2021 17:44

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:
...
//var DebugVar := irgendwas; if DebugVar <> 0 then LogMessage(blablabla, DebugVar);
...
(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)

Das ist mindestens genauso nützlich cool, wie beim
Delphi-Quellcode:
for var i := 0 to 10 do Write(i);
. :angle2:



Du kannst natürlich auch ans Ende ein
Delphi-Quellcode:
if DebugVar = 0 then ;
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.
Je nach Typ oben noch ein
Delphi-Quellcode:
DebugVar := 0;
rein (bei String/Interface/DynArray/Variant nicht nötig), damit es dann nicht heißt "variable nicht initialisiert", sobald aller DebugCode auskommentiert ist.


Zitat:

Zitat von Rollo62 (Beitrag 1481704)
Alle anderen Hints sehe ich ähnlich wie Warnings, als Fehler an,
und versuche sie zu Beseitigen.

Ich dachte das machen alle so. :stupid:


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