Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   {$WARN UNIT_PLATFORM OFF} funktioniert nicht ? (https://www.delphipraxis.net/175072-%7B%24warn-unit_platform-off%7D-funktioniert-nicht.html)

hoika 29. Mai 2013 08:08

{$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Hallo,

unter D2007.

Delphi-Quellcode:
unit Unit1;

interface

{$WARN UNIT_PLATFORM OFF}
{$WARN SYMBOL_PLATFORM OFF}

implementation

  faArchive <<-- Warnung

end;
Trotz des WARN OFF kommt die Platform-Warnung, warum ?
Es hilft nur das {$WARN SYMBOL_PLATFORM OFF} direkt im Code einzusetzen.
Ist aber doof ...

Warum geht das nicht ?

Heiko

Uwe Raabe 29. Mai 2013 09:02

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Zitat:

Zitat von hoika (Beitrag 1216792)
Warum geht das nicht ?

Weil sich das UNIT_PLATFORM nur auf plattformabhängige Units bezieht. Für plattformabhängige Symbole gibt es eben SYMBOL_PLATFORM.

hoika 30. Mai 2013 09:10

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Hallo,

in vielen Beispielen steht das aber direkt hinter interface (oder irre ich mich jetzt ?),
so wie ich das oben gezeigt hatte.

Muss ich das also immer direkt in den Code schreib ? ;(

Ich durchstöbere gerade unsere alten Units nach Code, der unter FMX überarbeitet werden muss
und wollte mit das oben per IFDEF MACOS leichter machen.

Und ja, ich weiss, so einfach ist das mit dem FMX nicht ;)


Heiko

Bernhard Geyer 30. Mai 2013 09:17

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Dies Compilerdefines kann man doch schon seit Jahren auch in den Projekteinstellungen definieren.
Ich würde es dort erledigen als in jede Unit das schreiben zu müssen.

hoika 30. Mai 2013 09:30

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Hallo,

hm, dann müsste ich das im FMX-Proekt rausnehmen,
wäre auch ne Variante.
Auf so was einfaches bin ich nicht gekommen ;)

Danke


Heiko

Uwe Raabe 30. Mai 2013 10:28

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Zitat:

Zitat von hoika (Beitrag 1216944)
in vielen Beispielen steht das aber direkt hinter interface (oder irre ich mich jetzt ?),
so wie ich das oben gezeigt hatte.

Muss ich das also immer direkt in den Code schreib ? ;(

Die Platform direktive kann eigentlich hinter jeder Deklaration stehen. Man kann also eine ganze Unit als platform deklarieren, was dann die entsprechende Warnung (UNIT_PLATFORM) ausgibt, wenn man diese Unit benutzt. Unit Vcl.FileCtrl ist ein Beispiel für eine platform Unit.

Etwas Anderes sind Symbole (Konstanten, Typen, Variablen, Methoden), die als platform deklariert sind. Verwendet man diese in seinem Code kommt die entsprechende Warnung (SYMBOL_PLATFORM). Solange die aktuelle Unit nur für eine Plattform gedacht ist, kann man am Anfang die Warnungen ausschalten. Diverse RTL/VCL-Units machen das so.

Das Ausschalten dieser Warnungen sollte aber nur in den Fällen erfolgen, wo sicher nur für eine Plattform entwickelt wird. In Units, die für alle Plattformen verwendet werden sollen, lässt man die Warnungen besser an.

hoika 30. Mai 2013 13:26

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Hallo,

< kann man am Anfang die Warnungen ausschalten >

Wie du ganz oben siehst, habe ich genau das gemacht.
Trotzdem kommt die Meldung ...


Heiko

Uwe Raabe 30. Mai 2013 15:14

AW: {$WARN UNIT_PLATFORM OFF} funktioniert nicht ?
 
Zitat:

Zitat von hoika (Beitrag 1216975)
< kann man am Anfang die Warnungen ausschalten >

Wie du ganz oben siehst, habe ich genau das gemacht.
Trotzdem kommt die Meldung ...

Entweder habe ich es noch nicht verstanden, oder ich kann es hier nicht nachvollziehen.

Delphi-Quellcode:
{$WARN SYMBOL_PLATFORM OFF}
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  temp: integer = faArchive; // keine Warnung
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf