AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal Warnungen für Third-Party Units unterdrücken (FPC)
Thema durchsuchen
Ansicht
Themen-Optionen

Warnungen für Third-Party Units unterdrücken (FPC)

Ein Thema von mjustin · begonnen am 25. Mär 2023 · letzter Beitrag vom 26. Mär 2023
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#1

Warnungen für Third-Party Units unterdrücken (FPC)

  Alt 25. Mär 2023, 19:24
In Delphi kann ich alle Hints und Warnings für Units unterdrücken indem ich sie diese Schalter setze:

Delphi-Quellcode:
  ...
  {$WARNINGS OFF}{$HINTS OFF}
  IdTCPClient, IdIOHandler,
  {$WARNINGS ON}{$HINTS ON}
  ...
oder (für Synapse):
Delphi-Quellcode:
  ...
  {$WARNINGS OFF}{$HINTS OFF}
  blcksock,
  {$WARNINGS ON}{$HINTS ON}
  ...
In Free Pascal wirkt dies nicht und beim Kompilieren werden alle Hints und Warnings ausgegeben. Auch für die von diesen Units eingebundenen weiteren Units.
Gibt es da etwas in den Free Pascal Optionen, um Hints und Warnings nur für meine Units zu erhalten?
(Ein etwas aufwendiger Workaround wäre z.B. nur die DCUs der anderen Units einzubinden).
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Warnungen für Third-Party Units unterdrücken (FPC)

  Alt 25. Mär 2023, 20:19
Gibt es da etwas in den Free Pascal Optionen, um Hints und Warnings nur für meine Units zu erhalten?
Hast du den Delphi-Mode schon an? Das ist nur eine Idee.

(Ein etwas aufwendiger Workaround wäre z.B. nur die DCUs der anderen Units einzubinden).
Das mache ich sowieso immer so. Es macht doch keinen Sinn, die ganzen Units bei einem Build immer neu zu kompilieren, wenn ich die nie ändere.

Da klicke ich einmal das Installationsskript, das die ganzen Komponenten kompiliert usw., wobei (bei Delphi) über MSBuild auch das Ausgabeverzeichnis usw. mitgegeben wird, schon muss ich nur noch dieses Verzeichnis in den Bibliothekspfad setzen. Die Formulardateien und Ressourcen kopiert das Skript natürlich auch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Warnungen für Third-Party Units unterdrücken (FPC)

  Alt 26. Mär 2023, 13:40
Was für Warnungen?

Warnungen zur Unit (z.B. Platform-Warnung) oder Warnungen aus den Units?


Viele Compilerschalter arbeiten eigentlich nur innerhalb der jeweiligen Unit, bis zu deren Ende, und wirken garnicht Unitübergreifend. (außer als Parameter an den Compiler, bzw. aus den Projekteinstellungen)

Wenn von innehalb dieser Units, warum kompilierst du diese Units immer wieder neu, anstatt die vorkompilierten DCUs im Suchpfad zu haben?
$2B or not $2B
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Warnungen für Third-Party Units unterdrücken (FPC)

  Alt 26. Mär 2023, 15:14
Hast du den Delphi-Mode schon an? Das ist nur eine Idee.
Ja, alle Projekte haben den Delphi-Mode aktiviert. Dennoch gibt nur der Free Pascal Compiler alle Hinweise und Warnungen aus. Mit Delphi erscheint keine.

Ich habe nun aber in der FPC Dokumentation die Direktiven PUSH und POP gefunden (siehe https://www.freepascal.org/docs-html/prog/progsu63.html), und nun eine LÖsung, die ohne vorkompilierte DCUs funktioniert.

Dokumentiert ist dies auch hier https://wiki.freepascal.org/Turn_war...ints_on_or_off

An einem Beispiel habe ich dies nun ausprobiert.

In der Indy Unit IdGlobal ist eine Direktive, die unter FPC wieder alle Hints aktiviert:
Delphi-Quellcode:
{$HINTS OFF}
function IsNumeric(const AString: string): Boolean;
var
  LCode: Integer;
  LVoid: Int64;
begin
  Val(AString, LVoid, LCode);
  Result := LCode = 0;
end;
{$HINTS ON}
Eingebunden hatte ich IdGlobal so:
Delphi-Quellcode:
{$WARNINGS OFF}{$HINTS OFF}{$NOTES OFF}
  IdGlobal,
Unter Delphi werden die Hints in der Unit IdGlobal daher durchgängig ausgeschaltet, und das HINTS ON ist wirkungslos.
Unter FPC werden ab der HINTS ON Anweisung wieder alle Hints ausgegeben.

Nachdem ich dies in IdGlobal umgestellt habe auf:
Delphi-Quellcode:
{$PUSH}{$HINTS OFF}
function IsNumeric(const AString: string): Boolean;
var
  LCode: Integer;
  LVoid: Int64;
begin
  Val(AString, LVoid, LCode);
  Result := LCode = 0;
end;
{$POP}
werden keine Hints mehr angezeigt. Das POP sorgt dafür dass der vorherige Zustand wieder hergestellt wird, und damit sind die Hints weiterhin abgeschaltet.

Im Endergebnis brauche ich daher nur an den wenigen Stellen, an denen zum Beispiel mORMOt2 mormot.net.sock eingebunden wird, diese Zeilen davor und danach:

Delphi-Quellcode:
  {$IFDEF FPC}{$NOTES OFF}{$ENDIF}{$HINTS OFF}{$WARNINGS OFF}
  mormot.net.sock,
  {$IFDEF FPC}{$ELSE}{$HINTS ON}{$WARNINGS ON}{$ENDIF}
und alle Warnungen, Hinweise und Notes für Indy werden unterdrückt.
Für alle anderen Units mit meinem eigenen Code erhalte ich weiterhin alle Meldungen, wenn ich mit Free Pascal kompiliere.
Insgesamt erhalte ich in Free Pascal nun anstatt den bisherigen ca. 200 Meldungen nur noch die 20, die eigenen Code betreffen.
Michael Justin
habarisoft.com

Geändert von mjustin (26. Mär 2023 um 15:57 Uhr) Grund: Beispiel ergänzt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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