Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Compiler-Direktive {$HINTS OFF} funktioniert nicht (https://www.delphipraxis.net/160581-compiler-direktive-%7B%24hints-off%7D-funktioniert-nicht.html)

s.h.a.r.k 20. Mai 2011 16:40

Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Ich habe ein wenig die Suche und Google bemüht, aber keinen Beitrag gefunden, der mir evtl. weiterhelfen könnte. Ich habe eine Konsolenanwendung geschrieben, die einen kleinen Benchmark ausführt. Dabei habe ich dann folgenden Code:
Delphi-Quellcode:
      {$HINTS OFF}
      for i := 0 to TEST_LOOPS do
        RttiProperty := RttiType.GetProperty('One');
      {$HINTS ON}
Die Variable RttiProperty wird danach nicht mehr verwendet. Ja, ich weiß, sollte eigentlich nicht sein, aber ich will die Zuweisung aber trotzdem. Nun erscheint pro Zuweisung an die Variable RttiProperty die Meldung:
Code:
[DCC Hinweis] Project1.dpr(221): H2077 Auf 'RttiProperty' zugewiesener Wert wird niemals benutzt
Ich würde diese Meldung ja verstehen, wenn denn {$HINTS OFF} nicht davor stehen würde, aber das ist nun mal der Fall. Warum spuckt der Compiler mir hier trotzdem einen Hinweis aus? Ich habe auch schon versucht es globaler zu definieren und nur einmal, kein Erfolg. An den Compiler-Einstellungen habe ich nichts geändert, ist alles Standard!

himitsu 20. Mai 2011 16:52

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
hab jetzt zwar keine direkte Lösung, aber...

Wenn es eh nicht benutzt wird, warum dann nicht gleich so?
Delphi-Quellcode:
for i := 0 to TEST_LOOPS do
  RttiType.GetProperty('One');
Sollte für einen Benchmark keinen Unterschied ausmachen, da Delphi hier eine interne Variable nutzt.

oder eben
Delphi-Quellcode:
for i := 0 to TEST_LOOPS do
   RttiProperty := RttiType.GetProperty('One');
 RttiProperty := nil;

s.h.a.r.k 20. Mai 2011 16:55

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Jo, klar. Das hatte ich mir dann auch gedacht :stupid: Aber seltsam ist es dann immer noch, dass diese Direktive total ignoriert wird.

himitsu 20. Mai 2011 18:31

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Es sollte auch noch irgendeinen anderen Compilerschalter geben, welcher geziehlt diese Meldungen deaktiviert ... vielleicht hat man ja vergessen das globale Hint auch mit abzufragen.

USchuster 20. Mai 2011 20:51

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Davon das {$HINTS OFF} nicht funktioniert kann überhaupt keine Rede sein. Die Überwachung der Benutzung von Variablen ist ein Feature des Compiler Backends und ich würde behaupten das dieses nur zuverlässig für die komplette Methode deaktiviert werden kann. Im folgenden Beispiel wird der Hint für Foo nicht angezeigt, wenn bei #1 {$HINTS ON} deaktiviert wird. Bei anderen Hinweisen funktioniert das Deaktivieren auch auf Zeilenebene - für Prozedur Test2 wird der Hint durch {$HINTS OFF}/{$HINTS ON} nur zwei anstatt drei Mal ausgegeben. Für Hints gibt es im Gegensatz zu Warnungen keine Möglichkeit diese einzeln an-/auszuschalten also kann es nicht an irgendwelchen Optionen liegen.

Delphi-Quellcode:
program Hints;

{$APPTYPE CONSOLE}

procedure Test;
var
  I, Foo: Integer;
begin
  {$HINTS OFF}
  for I := 0 to 1 do
    Foo := 1;
  {$HINTS ON}//#1
end;
{$HINTS ON}//#2

procedure Test2;
var
  P: Pointer;
begin
  P := nil;
  Finalize(P);
  {$HINTS OFF}
  Finalize(P);
  {$HINTS ON}
  Finalize(P);
end;

begin
end.

s.h.a.r.k 21. Mai 2011 14:31

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Das Problem ist, dass sowas nicht wirklich in der Doku steht.

Luckie 21. Mai 2011 16:04

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Ich hätte noch einen metaphysischen Erklärungsansatz: "Der Typ da an der Tastatur meint wohl, er könnte mich zum Schweigen bringen. Aber ich lasse mich nicht unterdrücken und sage meine Meinung, ob er will oder nicht. Compiler aller Länder vereinigt euch!"

s.h.a.r.k 21. Mai 2011 16:16

AW: Compiler-Direktive {$HINTS OFF} funktioniert nicht
 
Viva la revolución! :mrgreen:


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