![]() |
Compiler Direktive: Wo muss definiert werden?
Hallo,
da ich noch nicht viel mit Compiler Direktiven gearbeitet habe hier mal eine Frage: ich habe eine Unit die in verschiedenen Projekten verwendet wird. In dieser Unit definiere ich eine Konstante, die jedoch je nach Projekt einen anderen Wert haben soll. Also geh ich in der dpr jedes Projektes hin und mache eine
Delphi-Quellcode:
Bei der Deklaration der Konstante in der anderen Unit habe ich dann folgendes:
{$DEFINE PROJEKTNAME}
Delphi-Quellcode:
Allerding hat die Variable in jedem der Projekte immer den elsestring bekommen.
const
{$IFDEF PROJEKT1} C_KONSTANTE = 'string1'; {$ELSEIF PROJEKT2} C_KONSTANTE = 'string2'; {$ELSEIF PROJEKT3} C_KONSTANTE = 'string3'; {$ELSE} C_KONSTANTE = 'elsestring'; {$IFEND} Mache ich bei der Abfrage was falsch oder gelten diese Definitionen nur innerhalb einer Unit? :angel: |
Re: Compiler Direktive: Wo muss definiert werden?
Hallo Martin,
die Definitionen gelten nur innerhalb der Unit. Du kannst diese allerdings auch in eine *.inc Datei auslagern und dann in jede Unit, in der das benötigt wird, einbinden: switches.inc
Delphi-Quellcode:
const
{$IFDEF PROJEKT1} C_KONSTANTE = 'string1'; {$ELSEIF PROJEKT2} C_KONSTANTE = 'string2'; {$ELSEIF PROJEKT3} C_KONSTANTE = 'string3'; {$ELSE} C_KONSTANTE = 'elsestring'; {$IFEND} project1.pas
Delphi-Quellcode:
unit project1;
interface uses [...] {$DEFINE PROJEKT1} {$I 'switches.inc'} implementation [...] project2.pas
Delphi-Quellcode:
unit project1;
interface uses [...] {$DEFINE PROJEKT2} {$I 'switches.inc'} implementation [...] |
Re: Compiler Direktive: Wo muss definiert werden?
Ich brauch diese Konstante aber nur in der Unit die alle Projekte verwenden :gruebel:
Also es ist definitiv nicht möglich in der DPR eine Definition zu machen und auf diese dann in einer anderen zuzugreifen? |
Re: Compiler Direktive: Wo muss definiert werden?
Hi,
ich glaube man kann in den Projekteinstellungen noch was einstellen, das hatte bisher aber noch nicht genutzt. |
Re: Compiler Direktive: Wo muss definiert werden?
Es gibt CFG-Dateien. Für alle : DCC32.CFG oder übersteuern mir Programmname.CFG. Da macht man solche Direktiven rein.
|
Re: Compiler Direktive: Wo muss definiert werden?
Zitat:
zB. für bedingten Compiler-Anweisungen, die gelten dan Global für alle eingebundene Units. Zitat:
|
Re: Compiler Direktive: Wo muss definiert werden?
Zitat:
|
Re: Compiler Direktive: Wo muss definiert werden?
AHHH klappt doch nicht, die Direktiven sind nicht richtig, so muss es heissen:
Delphi-Quellcode:
sonst springt der Compiler immer direkt ins else. :gruebel:
const
{$IFDEF PROJEKT1} C_KONSTANTE = 'string1'; {$ELSEIF DEFINED(PROJEKT2)} C_KONSTANTE = 'string2'; {$ELSEIF DEFINED(PROJEKT3)} C_KONSTANTE = 'string3'; {$ELSE} C_KONSTANTE = 'elsestring'; {$IFEND} Edit: Blöd ist jetz noch, das ich die Unit mit der Konstanten in jedem Projekt vorm kompilieren verändern muss damit diese neu erzeugt wird. Kann ich das irgendwie einstellen das die automatisch immer neu erzeugt wird? |
Re: Compiler Direktive: Wo muss definiert werden?
Zitat:
|
Re: Compiler Direktive: Wo muss definiert werden?
Du kannst Dich selbst so einstellen, daß Du immer neu erzeugst, statt nur compilierst ;)
Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz