![]() |
Manche Warnungen nicht für einzelne Zeilen steuerbar?
Folgendes Beispiel:
Delphi-Quellcode:
Ganz abgesehen davon dass die vom Compiler erzeugte Warnung übervorsichtig (=falsch) ist, warum kann ich sie nicht gezielt unterdrücken? Ich muss die Warnung außerhalb der Methode wieder auf
procedure someProc();
var iterator: Integer; someValue: TObject; begin for iterator := 0 to 5 do begin if iterator = 3 then someValue := TObject.Create() else Continue; {$WARN USE_BEFORE_DEF OFF} someValue.ClassName(); end; // Die folgende Zeile sorgt dafür dass die Zeile oben TROTZDEM eine // Warnung erzeugt //{$WARN USE_BEFORE_DEF DEFAULT} end; // Die Warnung außerhalb der Methode wieder einzuschalten klappt {$WARN USE_BEFORE_DEF DEFAULT
Delphi-Quellcode:
setzen. Tue ich das innerhalb, bekomme ich trotzdem eine Warnung, als hätte ich sie nie ausgeschaltet.
DEFAULT
|
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Also bevor ich mit so einem esoterischen Schnickschnack anfangen würde, füge ich einfach eine Zeile Code am Anfang ein und der Keks ist geknuspert.
Auch wenn dieser Code nur beispielhaft ist, so muss im realen Code auch irgendwann die Instanz wieder freigegeben werden und gerade bevor ich mich da noch weiter verrenke, initialisiere ich die Variable gleich am Anfang und kann immer ganz beherzt und sorglos ein
Delphi-Quellcode:
ausführen.
FreeAndNil( someValue );
Die Warnung wird also IMHO völlig zurecht ausgegeben. Du solltest dich mehr damit beschäftigen die Warnung zu beherzigen und den Code sauber zu halten anstatt die Warnung auf Teufel komm raus zu unterdrücken. Meine Codes kommen Hinweis- und Warnungsfrei durch den Compiler ohne nackt mit dem Huhn durchs Feuer zu springen ;) |
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Zitat:
Delphi-Quellcode:
in die erste Zeile und der Drops is gelutscht...
someValue := nil;
|
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Instanzen freigeben und alles, darum geht es doch nicht.
Der Compiler warnt vor einem "Nicht initialisiert worden" das nie auftreten kann. Klar, jetzt kann ich ein
Delphi-Quellcode:
einfügen und dann natürlich noch ein
someValue := Nil
Delphi-Quellcode:
für das sonst daraus resultierende "Auf someValue zugewiesener Wert wird nie benutzt" (wie passt das zusammen?).
if Assigned(someValue) then asm nop end;
Alternativ könnte ich die Warnung auch temporär abschalten. Das war meine Intention. |
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Zitat:
und dann ist der Compiler nicht intelligent genug soein IF wegzuoptimieren, wenn danach nichts mehr kommt und auch im IF keine Funktionen aufgerufen werden. :angel:
Delphi-Quellcode:
if Assigned(someValue) then ;
|
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Zitat:
|
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Zitat:
|
AW: Manche Warnungen nicht für einzelne Zeilen steuerbar?
Hallo Günther,
in grauer Vorzeit war es so, daß alle Variablen mit einem Wert vorbelegt wurden, es hieß daß auf diese Weise Fehlerursachen vermieden würden. Daran halte ich mich immer noch. Und wenn dann kommt "Variable wurde nicht genutzt", dann fliegt sie raus, es sei denn, sie wird noch für's Debugging benötigt. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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