Procedure abhängig von FPC Version implementieren

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 840
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Procedure abhängig von FPC Version implementieren

Beitrag von fliegermichl »

Hallo,

wie kann ich ein conditional define in Abhängigkeit von der FPCVERSION machen?
Ich verwende in einem älteren Projekt die Unit VirtualTrees.pas und diese activex.pp.

Diese definiert u.a. das Interface IDataObject.
Dabei hat sich irgendwann (wann genau muss ich noch rausfinden) ein Parameter der Procedure SetData von var auf const verändert.
Ich möchte das Projekt wahlweise mit neueren oder auch älteren FPC Versionen compilieren können.

Wenn ich es so versuche:

Code: Alles auswählen

    Function SetData (Const formatetc : tagFORMATETC;{$IF FPCVERSION > 3}var{$ELSE}const{$ENDIF}   medium:TagstGMEDIUM;DoRelease : longBOOL):longint; StdCall;
bekomme ich eine Fehlermeldung

Code: Alles auswählen

VirtualTrees.pas(1006,58) Error: Incompatible types: got "AnsiString" expected "Int64"
Ich hab solche Definitionen schon gesehen, finde aber grad kein Beispiel.

Benutzeravatar
six1
Beiträge: 347
Registriert: Do 1. Jul 2010, 19:01

Re: Procedure abhängig von FPC Version implementieren

Beitrag von six1 »

Hier ein Beispiel aus meiner Umsetzung der Melanders Drag&Drop Suite

Code: Alles auswählen

 {$IF (FPC_FULLVERSION >= 30101)}
    function Stat(out statstg: TStatStg; grfStatFlag: DWORD): HResult; override; stdcall;
    {$ELSE}
    function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult; override; stdcall;
    {$ENDIF}
Gruß, Michael

PascalDragon
Beiträge: 293
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: Procedure abhängig von FPC Version implementieren

Beitrag von PascalDragon »

fliegermichl hat geschrieben:
Do 11. Mär 2021, 08:59
wie kann ich ein conditional define in Abhängigkeit von der FPCVERSION machen?
Wie so häufig sollte hier ein Blick in die Dokumentation helfen. ;)
FPC Compiler Entwickler

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 840
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Procedure abhängig von FPC Version implementieren

Beitrag von fliegermichl »

PascalDragon hat geschrieben:
Do 11. Mär 2021, 09:15
fliegermichl hat geschrieben:
Do 11. Mär 2021, 08:59
wie kann ich ein conditional define in Abhängigkeit von der FPCVERSION machen?
Wie so häufig sollte hier ein Blick in die Dokumentation helfen. ;)
Ich hab bestimmt eine halbe Stunde lang gegoogelt mit "Freepascal FPCVERSION" und ähnlichen Suchbegriffen aber nix brauchbares gefunden.
Dieser Link kommt jetzt in mein Brainhelp Programm :-)

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 840
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.11 FPC 3.2)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Procedure abhängig von FPC Version implementieren

Beitrag von fliegermichl »

six1 hat geschrieben:
Do 11. Mär 2021, 09:02
Hier ein Beispiel aus meiner Umsetzung der Melanders Drag&Drop Suite

Code: Alles auswählen

 {$IF (FPC_FULLVERSION >= 30101)}
    function Stat(out statstg: TStatStg; grfStatFlag: DWORD): HResult; override; stdcall;
    {$ELSE}
    function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult; override; stdcall;
    {$ENDIF}
Danke dir. Genau das hatte ich versucht herauszufinden!

Antworten