Autor Beitrag
Ares
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 128



BeitragVerfasst: Mi 08.03.06 13:02 
Hallo!

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

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ares Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 128



BeitragVerfasst: Mi 08.03.06 13:14 
Ah, vielen Dank. Das funktioniert wunderbar :-)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...