![]() |
Warnungen für Third-Party Units unterdrücken (FPC)
In Delphi kann ich alle Hints und Warnings für Units unterdrücken indem ich sie diese Schalter setze:
Delphi-Quellcode:
oder (für Synapse):
...
{$WARNINGS OFF}{$HINTS OFF} IdTCPClient, IdIOHandler, {$WARNINGS ON}{$HINTS ON} ...
Delphi-Quellcode:
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.
...
{$WARNINGS OFF}{$HINTS OFF} blcksock, {$WARNINGS ON}{$HINTS ON} ... 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). |
AW: Warnungen für Third-Party Units unterdrücken (FPC)
Zitat:
Zitat:
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. |
AW: Warnungen für Third-Party Units unterdrücken (FPC)
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? |
AW: Warnungen für Third-Party Units unterdrücken (FPC)
Zitat:
Ich habe nun aber in der FPC Dokumentation die Direktiven PUSH und POP gefunden (siehe ![]() Dokumentiert ist dies auch hier ![]() 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:
Eingebunden hatte ich IdGlobal so:
{$HINTS OFF}
function IsNumeric(const AString: string): Boolean; var LCode: Integer; LVoid: Int64; begin Val(AString, LVoid, LCode); Result := LCode = 0; end; {$HINTS ON}
Delphi-Quellcode:
Unter Delphi werden die Hints in der Unit IdGlobal daher durchgängig ausgeschaltet, und das HINTS ON ist wirkungslos.
{$WARNINGS OFF}{$HINTS OFF}{$NOTES OFF}
IdGlobal, Unter FPC werden ab der HINTS ON Anweisung wieder alle Hints ausgegeben. Nachdem ich dies in IdGlobal umgestellt habe auf:
Delphi-Quellcode:
werden keine Hints mehr angezeigt. Das POP sorgt dafür dass der vorherige Zustand wieder hergestellt wird, und damit sind die Hints weiterhin abgeschaltet.
{$PUSH}{$HINTS OFF}
function IsNumeric(const AString: string): Boolean; var LCode: Integer; LVoid: Int64; begin Val(AString, LVoid, LCode); Result := LCode = 0; end; {$POP} 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:
und alle Warnungen, Hinweise und Notes für Indy werden unterdrückt.
{$IFDEF FPC}{$NOTES OFF}{$ENDIF}{$HINTS OFF}{$WARNINGS OFF}
mormot.net.sock, {$IFDEF FPC}{$ELSE}{$HINTS ON}{$WARNINGS ON}{$ENDIF} 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 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