Var Parameter erzeugt Warning
-
- Beiträge: 462
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Re: Var Parameter erzeugt Warning
Die Hints sind ja oft nützliche Hinweise. Aber wenn dann zu Hauf unnütze Hinweise kommen, schaut man nicht mehr wirklich drauf.
Re: Var Parameter erzeugt Warning
Die Doku ist hierzu vielleicht mal ganz hilfreich:
Fatal
The compiler encountered an error, and can no longer continue compiling. It will stop at once.
Error
The compiler encountered an error, but can continue to compile (at most till the end of the current unit).
Warning
if there is a warning, it means there is probably an error, i.e. something may be wrong in your code.
Hint
Is issued if the compiler thinks the code could be better, but there is no suspicion of error.
Note
Is some noteworthy information, but again there is no error.
The difference between hints and notes is not really very clear. Both can be ignored without too much risk, but warnings should always be checked.
https://www.freepascal.org/docs-html/user/usersu13.html
Fatal
The compiler encountered an error, and can no longer continue compiling. It will stop at once.
Error
The compiler encountered an error, but can continue to compile (at most till the end of the current unit).
Warning
if there is a warning, it means there is probably an error, i.e. something may be wrong in your code.
Hint
Is issued if the compiler thinks the code could be better, but there is no suspicion of error.
Note
Is some noteworthy information, but again there is no error.
The difference between hints and notes is not really very clear. Both can be ignored without too much risk, but warnings should always be checked.
https://www.freepascal.org/docs-html/user/usersu13.html
Re: Var Parameter erzeugt Warning
Hallo und nochmal danke für eine Hinweise.
Warum mich die Warnings und Hints stören - nun es sind mir zu viele und ich kann nicht mit einem Blick sehen, ob alles ok blieb oder ob ich mir mit meiner letzten Änderung etwas reingebaut habe, was so nicht sein sollte. Zumal es in der Standard-Konfiguration auch immer unterschiedlich ist, je nachdem ob ich FPC im Lazarus oder auf der Kommandozeile aufrufe.
Und ja, ich nehme Warnings und Hints oftmals ernst denn der Compiler ist immer sorgfältiger als ich und weiß schon wo mein nächster Fehler sein wird, also sind sie schon erwünscht, man müßte sie nur quasi abhaken und selektiv abstellen können. Das {HINT} geht in die Richtung, nur daß ich dann lieber in dem Fall an die "Quelle" also die Deklaration gehe.
Ich habe diese Woche gelernt, es gibt neben var und out auch noch const - und vielleicht nutze ich sowas sagr mal.
Warum mich die Warnings und Hints stören - nun es sind mir zu viele und ich kann nicht mit einem Blick sehen, ob alles ok blieb oder ob ich mir mit meiner letzten Änderung etwas reingebaut habe, was so nicht sein sollte. Zumal es in der Standard-Konfiguration auch immer unterschiedlich ist, je nachdem ob ich FPC im Lazarus oder auf der Kommandozeile aufrufe.
Und ja, ich nehme Warnings und Hints oftmals ernst denn der Compiler ist immer sorgfältiger als ich und weiß schon wo mein nächster Fehler sein wird, also sind sie schon erwünscht, man müßte sie nur quasi abhaken und selektiv abstellen können. Das {HINT} geht in die Richtung, nur daß ich dann lieber in dem Fall an die "Quelle" also die Deklaration gehe.
Ich habe diese Woche gelernt, es gibt neben var und out auch noch const - und vielleicht nutze ich sowas sagr mal.
Re: Var Parameter erzeugt Warning
Hier solltest du einen Unterschied machen.alfware17 hat geschrieben: Do 30. Jan 2025, 13:32 Und ja, ich nehme Warnings und Hints oftmals ernst denn der Compiler ist immer sorgfältiger als ich
Warnungen sollte man ernst nehmen und der Grund für die Warnung sollte - falls möglich - behoben werden.
Hints und Notes hingegen kann man kurz anschauen, aber meistens getrost ignorieren. Ich sehe keinen Sinn darin, viel Zeit dafür aufzuwenden, die Ursachen dafür zu entfernen. Manchmal ist es einfach zu lösen, manchmal nicht sinnvoll möglich.
Schlimm ist es nie. Einfach ausblenden.
- af0815
- Lazarusforum e. V.
- Beiträge: 6661
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Var Parameter erzeugt Warning
Lazarus kann die Hints, Notes etc. leicht ausblenden, wenn man der FPC allein verwendet fallen natürlich die Filterfunktion von Lazarus weg.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 919
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Var Parameter erzeugt Warning
Die RTL ist TP/Delphi-kompatibel, wo diese Funktionen auch var-Parameter haben. Da Nutzer Funktionszeiger nutzen könnten. Außerdem gibt es ein leicht unterschiedliches Verhalten mit verwalteten Typen (Strings, Interfaces, etc.), da diese vor der Übergabe an einen out-Parameter freigegeben werden.braunbär hat geschrieben: Mi 29. Jan 2025, 17:24 Was eine gute Sache wäre: Wenn die Out-Parameter der Free-Pascal runtime als solche und nicht als var-Parameter deklariert wären. Viele Parameter von Free Pascal Runtime.Prozeduren, die reine Ausgabe-Parameter sind, sind als var deklariert und produzieren diese Warnung, wenn man sie - völlig korrekt - uninitialisiert verwendet.
FPC Compiler Entwickler
-
- Beiträge: 462
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Re: Var Parameter erzeugt Warning
Dann könnte man ja die Parameter im Mode Delphi als var-Parameter belassen, und in den anderen Modes so deklarieren, wie es sinnvoll ist..
-
- Beiträge: 919
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Var Parameter erzeugt Warning
Du kannst nicht den Modus einer vorkompilierten Unit ändern.braunbär hat geschrieben: Fr 31. Jan 2025, 01:58 Dann könnte man ja die Parameter im Mode Delphi als var-Parameter belassen, und in den anderen Modes so deklarieren, wie es sinnvoll ist..
FPC Compiler Entwickler
-
- Beiträge: 462
- Registriert: Do 8. Jun 2017, 18:21
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
- CPU-Target: 64Bit
- Wohnort: Wien
Re: Var Parameter erzeugt Warning
Das gehört im Quelltext der Units geändert.
Wenn ich das selbst machen würde, hätte es aber keinen Sinn, weil es beim nächsten Lazarus-Update wieder weg wäre.
Wenn ich das selbst machen würde, hätte es aber keinen Sinn, weil es beim nächsten Lazarus-Update wieder weg wäre.
-
- Beiträge: 919
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Var Parameter erzeugt Warning
Nochmal: wir wollen das nicht ändern, da dies sonst nicht mehr Delphi-kompatibel ist. Und das kann eben auch nicht Mode-spezifisch geändert werden, da die Unit prekompiliert wird und die Kern Units der RTL so oder so eh nur im Modus ObjFpc kompiliert werden.
FPC Compiler Entwickler
- Niesi
- Lazarusforum e. V.
- Beiträge: 560
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 3.8 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: Var Parameter erzeugt Warning
Also ich finde dieses "System" gut, mich stören hints und notes nicht. Ganz im Gegenteil, ich finde sie ganz oft sehr nützlich.theo hat geschrieben: Do 30. Jan 2025, 12:17 Die Doku ist hierzu vielleicht mal ganz hilfreich:
Fatal
The compiler encountered an error, and can no longer continue compiling. It will stop at once.
Error
The compiler encountered an error, but can continue to compile (at most till the end of the current unit).
Warning
if there is a warning, it means there is probably an error, i.e. something may be wrong in your code.
Hint
Is issued if the compiler thinks the code could be better, but there is no suspicion of error.
Note
Is some noteworthy information, but again there is no error.
The difference between hints and notes is not really very clear. Both can be ignored without too much risk, but warnings should always be checked.
https://www.freepascal.org/docs-html/user/usersu13.html
Viele habe ich allerdings nicht.
Wer sich daran stört sollte sie halt ausblenden, wie schon mehrfach vorgeschlagen wurde ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Beiträge: 6779
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Var Parameter erzeugt Warning
Dies macht schon sinn. So sieht man, wen man unnütze Variablen deklariert hat.Also ich finde dieses "System" gut, mich stören hints und notes nicht. Ganz im Gegenteil, ich finde sie ganz oft sehr nützlich.
Bei Callprocs kann man es kaum verhindern, aber dafür gibt es {$%H-}
Wieso kommt da keine Warnung ?
Wird der Sender irgendwo intern vom Compiler abgefangen ?
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Var Parameter erzeugt Warning
Bei mir kommt eine:Mathias hat geschrieben: Mi 5. Feb 2025, 08:38 Wieso kommt da keine Warnung ?
Wird der Sender irgendwo intern vom Compiler abgefangen ?Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject); begin end;
unit1.pas(16,28) Verbose: Parameter "Sender" not used
Re: Var Parameter erzeugt Warning
können Sie die IDE-Direktive verwenden: {%H-}, dann werden die Hinweise nicht angezeigt, sondern nur für die Variable, vor der diese Direktive steht. Für Variablen in einer Funktions-/Prozedurdefinition muss die Direktive sowohl im Abschnitt interface als auch im Abschnitt implementation verwendet werden.
Im folgenden Beispiel erscheint die Eingabeaufforderung nur für die Variable j:
Im folgenden Beispiel erscheint die Eingabeaufforderung nur für die Variable j:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click({%H-}Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click({%H-}Sender: TObject);
var
{%H-}i, j, {%H-}k: Integer;
begin
end;
end.
Grüße / Pozdrawiam
paweld
paweld
-
- Beiträge: 6779
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Var Parameter erzeugt Warning
Stimmt, hast recht, bei den Nachrichten kommt es.Bei mir kommt eine:
unit1.pas(16,28) Verbose: Parameter "Sender" not used
Aber im Editor selbst gibt es keine Sprechblase.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot