Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Delphi Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC (https://www.delphipraxis.net/191785-ausschluss-von-free-pascal-spezifischem-code-ueber-ifdef-fpc.html)

mjustin 19. Feb 2017 10:01


Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
In Delphi 2009 ist es mir nicht gelungen, über die Bedingung {$IFDEF FPC} den nachfolgenden Ausdruck {$IF FPC_FULLVERSION = 30000} vom Kompilieren auszuschliessen.

Der Delphi Compiler gibt "[DCC Error] Test.pas(2): E2026 Constant expression expected" aus.

Delphi-Quellcode:
{$IFDEF FPC}
 {$IF FPC_FULLVERSION = 30000}
   {$MESSAGE WARN 'Please use FPC 3.0.2'}
 {$IFEND}
{$ENDIF}
Die Warnung 'Please use FPC 3.0.2' soll nur beim Kompilieren mit Free Pascal 3.0.0 ausgegeben werden.

Anscheinend versucht der Delphi Compiler trotz des nicht erfüllten {$IFDEF FPC} die FPC-spezifische $IF Bedingung auszuwerten.

himitsu 19. Feb 2017 10:39

AW: Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
Ich kann mich nicht erinnen, dass es in D2009 derartige Probleme gab.

Sicher, dass es nicht irgendwo ein entsprechendes DEFINE gibt?



Delphi-Quellcode:
{$IF Declared(FPC_FULLVERSION) and (FPC_FULLVERSION = 30000)}
  {$MESSAGE WARN 'Please use FPC 3.0.2'}
{$IFEND}
Aber k.A. ob FPC Defined und Declared kennt.

mjustin 19. Feb 2017 11:12

AW: Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
Zitat:

Zitat von himitsu (Beitrag 1362059)
Ich kann mich nicht erinnen, dass es in D2009 derartige Probleme gab.

Sicher, dass es nicht irgendwo ein entsprechendes DEFINE gibt?



Delphi-Quellcode:
{$IF Declared(FPC_FULLVERSION) and (FPC_FULLVERSION = 30000)}
  {$MESSAGE WARN 'Please use FPC 3.0.2'}
{$IFEND}
Aber k.A. ob FPC Defined und Declared kennt.

Mit Defined statt Declared funktioniert es:

Delphi-Quellcode:
{$IF Defined(FPC_FULLVERSION) and (FPC_FULLVERSION = 30000)}
  {$MESSAGE WARN 'Please use FPC 3.0.2'}
{$IFEND}
Vielen Dank, schönen Sonntag noch!

himitsu 19. Feb 2017 19:04

AW: Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
Dann funktioniert FPC aber nicht richtig?

So ist das seit mindestens Delphi 6.
Delphi-Quellcode:
{$IF Defined(XXX)} -> {$DEFINE XXX}
{$IF Declared(VVV)} -> const VVV = 30000;

mjustin 20. Feb 2017 08:30

AW: Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
Zitat:

Zitat von himitsu (Beitrag 1362081)
Dann funktioniert FPC aber nicht richtig?

So ist das seit mindestens Delphi 6.
Delphi-Quellcode:
{$IF Defined(XXX)} -> {$DEFINE XXX}
{$IF Declared(VVV)} -> const VVV = 30000;

Müsste ich mir noch genauer ansehen :)

mjustin 24. Feb 2017 12:31

AW: Ausschluß von Free Pascal-spezifischem Code über IFDEF FPC
 
Ich habe nun eine einfache und kürzere Lösung gefunden die ohne $IF auskommt:

Delphi-Quellcode:
{$IFDEF VER3_0_0}
  {$MESSAGE WARN 'Please use FPC 3.0.2'}
{$ENDIF}
Quelle: http://wiki.freepascal.org/Conditional_compilation/de


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 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