Entwickler-Ecke

Sonstiges (Delphi) - Bedingte Kompilierung für Demoversion


Ares - Mi 08.03.06 13:02
Titel: Bedingte Kompilierung für Demoversion
Hallo!

Ich möchte gerne die bedingte Kompilierung nutzen, um aus einer Vollversion ein Demo zu erstellen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
{$DEFINE vollversion}
...
{$IFDEF vollversion}
   machwas;
{$ELSE}
   showMessage('Die Funktion gibts nur in der Vollversion');
{$ENDIF}


Das ganze funktioniert aber scheinbar nur, wenn das Define in der selben Unit steht, wie die IF Abfragen. Wenn {$DEFINE vollversion} in Unit A steht, die Unit B über die Uses-Klausel einbindet, ist {$IFDEF vollversion} in Unit B false...
Es gibt jedoch ziemlich viele Units, in denen Unterschiedungen zwischen Demo und Vollversion stattfinden müsste. Muss ich in jeder Unit {$DEFINE vollversion} angeben oder kann ich das irgendwie Zentral lösen?

Besten Dank
Ares


Christian S. - Mi 08.03.06 13:07

Hallo!

Das Problem hatte ich letzens auch, weil ich sonst nie mit Compilerschaltern arbeite. Die Lösung (dank an Uwe ;-)) ist: Definiere den Schalter in den Projektoptionen unter "Verzeichnisse / Bedingungen" und dort "Definitionen". Dann ist es im gesamten Projekt gültig.

Grüße
Christian


Ares - Mi 08.03.06 13:14

Ah, vielen Dank. Das funktioniert wunderbar :-)


jaenicke - Mi 08.03.06 13:18

Wie ich das bei meinen Programmen mache:
Einfach eine Programm.inc Datei mit den Schaltern machen, und diese dann über {$I Programm.inc} direkt nach Unit XY; einbinden.

Der Vorteil ist, dass man nicht ständig in die Projektoptionen muss, wenn man etwas umschalten möchte, und dass man diese Datei auch aus Batch-Skripten erstellen kann, um beide Versionen aus einem Skript erzeugen zu können.
Und man muss ja nur einmal in jede Datei die Include-Zeile schreiben, sodass es auch kaum Mühe macht...