Delphi Compiler-versie-richtlijnen

Als u van plan bent Delphi-code te schrijven die met verschillende versies van de Delphi-compiler zou moeten werken, moet u weten onder welke versies uw code wordt gecompileerd.

Stel dat u uw eigen commerciële aangepaste component schrijft. Gebruikers van uw component kunnen andere Delphi-versies hebben dan u. Als ze proberen de code van het component - uw code - opnieuw te compileren, kunnen ze in de problemen komen! Wat als u standaardparameters in uw functies gebruikt en de gebruiker Delphi 3 heeft?

Compilerrichtlijn: $ IfDef

Compilerrichtlijnen zijn speciale syntaxiscommentaren die we kunnen gebruiken om de functies van de Delphi-compiler te beheren. De Delphi-compiler heeft drie soorten richtlijnen: sheksenrichtlijnen, parameterrichtlijnen en voorwaardelijke richtlijnen. Met voorwaardelijke compilatie kunnen we selectief delen van een broncode compileren, afhankelijk van welke voorwaarden zijn ingesteld.

De compilerrichtlijn $ IfDef start een sectie voorwaardelijke compilatie.

De syntaxis ziet eruit als:

 $ IfDef DefName

... 

 $ Else

... 

 $ EndIf

 

De defname presenteert het zogenaamde voorwaardelijke symbool. Delphi definieert verschillende standaard voorwaardelijke symbolen. In bovenstaande "code", als de DefName is gedefinieerd, wordt bovenstaande code gebruikt $ Else wordt gecompileerd.

Delphi-versie symbolen

Een veelgebruikt gebruik van de $ IfDef-richtlijn is het testen van de versie van de Delphi-compiler. De volgende lijst geeft de symbolen aan die moeten worden gecontroleerd bij het voorwaardelijk compileren voor een bepaalde versie van de Delphi-compiler:

  • SYMBOOL - COMPILERVERSIE
  • VER80 - Delphi 1
  • VER90 - Delphi 2
  • VER100 - Delphi 3
  • VER120 - Delphi 4
  • VER130 - Delphi 5
  • VER140 - Delphi 6
  • VER150 - Delphi 7
  • VER160 - Delphi 8
  • VER170 - Delphi 2005
  • VER180 - Delphi 2006
  • VER180 - Delphi 2007
  • VER185 - Delphi 2007
  • VER200 - Delphi 2009
  • VER210 - Delphi 2010
  • VER220 - Delphi XE
  • VER230 - Delphi XE2
  • WIN32 - Geeft aan dat de besturingsomgeving de Win32 API is.
  • LINUX - Geeft aan dat de besturingsomgeving Linux is
  • MSWindows - Geeft aan dat de besturingsomgeving de MS Windows / li is]
  • TROOSTEN - Geeft aan dat een applicatie wordt gecompileerd als een console-applicatie

Door de bovenstaande symbolen te kennen, is het mogelijk om code te schrijven die werkt met verschillende versies van Delphi door compilerrichtlijnen te gebruiken om voor elke versie de juiste broncode te compileren.

Opmerking: symbool VER185 wordt bijvoorbeeld gebruikt om de Delphi 2007-compiler of een eerdere versie aan te duiden.

Gebruik van "VER" -symbolen

Het is vrij gebruikelijk (en wenselijk) voor elke nieuwe Delphi-versie om verschillende nieuwe RTL-routines aan de taal toe te voegen.

Bijvoorbeeld, de functie includeTrailingBackslash, geïntroduceerd in Delphi 5, voegt "\" toe aan het einde van een string als deze er nog niet is. In het Delphi MP3-project heb ik deze functie gebruikt en verschillende lezers hebben geklaagd dat ze het project niet kunnen compileren - ze hebben een versie van Delphi voorafgaand aan Delphi 5.

Een manier om dit probleem op te lossen, is door uw eigen versie van deze routine te maken - de functie AddLastBackSlash. Als het project op Delphi 5 moet worden gecompileerd, wordt de InclusiefTrailingBackslash aangeroepen. Als sommige van de vorige Delphi-versies worden gebruikt, simuleren we de functie InclusiefTrailBackslash.

Het kan er ongeveer zo uitzien: