Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi globale Compiler Directive, wie {$DEFINE TEST} (https://www.delphipraxis.net/18752-globale-compiler-directive-wie-%7B%24define-test%7D.html)

delphin 24. Mär 2004 09:46


globale Compiler Directive, wie {$DEFINE TEST}
 
Hallo,

habe ein kleines Problem mit dem Handling des Compilers.

Ich möchte in meinem Programmen, die - schon aus Gründen der Übersichtlichkeit - aus verschiedenen Units bestehen, Compilerdirectiven global zum Beispiel für Testzwecke der Art:

Delphi-Quellcode:
{$DEFINE TEST}
für alle Units des Projects gültig, setzen !

Leider gelingt mir das stets nur für die Unit, in der die Directive steht.

Wie kann man das mit einer einzigen Anweisung für das gesamte Project gültig definieren ?

Gruß Gerd

Chewie 24. Mär 2004 13:39

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Leider geht das in Delphi nicht. Als Workaround könntest du aber eine Include-Datei erstellen, die du in jeder Unit einfügst (via $INCLUDE bzw. $I). Dort stehen dann die Compilerdirektiven drin.

delphin 24. Mär 2004 22:17

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Chewie,

danke für Deinen Vorschlag, aber eigentlich kann ich nicht glauben, das es keine globalen Compilerschalter geben soll.

Welchen Sinn macht dann unter <Projekt>,<Optionen>,<Verzeichnise,Bedingungen> [Delphi7] der vorletzte Eintrag, gemäß Anhang :?:
.
<Bedingungen>
Definition: ?

Noch 'ne Frage zu Deinem Vorschlag: Wie müßte die Include-Datei dann aufgebaubt sein, damit hieraus globale Compilerdirectiven der Art
Delphi-Quellcode:
{$DEFINE TEST}
an die Unit übergeben werden kann ? Hast Du das schonmal probiert ?

Basilikum 24. Mär 2004 22:42

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
ins Feld Definition unter Bedingung muss lediglich "Test" (ohne ") eingetragen werden... {$DEFINE } braucht es dort nicht...
weitere Einträge können mit Komma getrennt angefügt werden....

Chewie 25. Mär 2004 09:51

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Ups, da hab ich mich wohl geirrt. Ich hab das nicht selbst ausprobiert, ich meinte aber, ich hätte das wo gelesen. Tschuldige nochmal. :?

NicoDE 25. Mär 2004 10:04

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Zitat:

Zitat von delphin
Welchen Sinn macht dann unter <Projekt>,<Optionen>,<Verzeichnise,Bedingungen> [...] <Bedingungen> Definition: ?

Dadurch werden Symbole auf der Kommandozeile beim Kompilieren übergeben (dcc32 -DFOO=BAR).
(also gibt es die Symbole dann im gesamten Projekt...)

delphin 26. Mär 2004 16:40

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Vorsicht Compiler-Fall, :twisted:

jetzt habe ich's gelöst. Die Sache mit dem Eintrag im Project

Delphi-Quellcode:
 <Projekt>,<Optionen>,<Verzeichnise,Bedingungen> [...] <Bedingungen>
 Definition:
hat einen Hacken.

Ändert an oben beschriebener Stelle einfach den Compiler-Schalter oder löscht den Schalter ganz(alle Compiler-Optionen gelöscht), dann muss das ganz Projekt neu compiliert werden ! :lol:

Einfach nur F9 bringt keine Änderung, da der (in diesem Fall zu intelligente) :wall: Compiler keine Änderung in den Units feststellt, compiliert er auch nicht neu, sondern Start nur das Projekt. Zwingender Weise mit den alt-compilierten Programmverzweigungen.

Habe zum Test 2 Unit der Art:

Unit 1:
Delphi-Quellcode:
{$ifDef TEST}  ShowMessage('Start Unit1: TEST-Schalter');
{$ELSE}        ShowMessage('Start Unit1: no Test'}
{$EndIf}
Unit 2:
Delphi-Quellcode:
{$ifDef TEST}  ShowMessage('Start Unit2: TEST-Schalter');
{$ELSE}        ShowMessage('Start Unit2: no Test'}
{$EndIf}
Ändert man nur den Compiler-Schalter im Project wird die zu letzt compilierte Programm-Version gestart !
Verändert man zusätzlich in einer Unit den Quelltext, wirken sich mit F9 die neu gesetzten Compiler-Option nur auf diese Unit aus.

Deswegen nach Compiler-Option-Änderung:
Delphi-Quellcode:
Alle Projekte compilieren

NicoDE 26. Mär 2004 16:45

Re: globale Compiler Directive, wie {$DEFINE TEST}
 
Zitat:

Zitat von delphin
Ändert man nur den Compiler-Schalter im Project wird die zu letzt compilierte Programm-Version gestart !
Verändert man zusätzlich in einer Unit den Quelltext, wirken sich mit F9 die neu gesetzten Compiler-Option nur auf diese Unit aus.

Deswegen nach Compiler-Option-Änderung:
Delphi-Quellcode:
Alle Projekte compilieren

WAD (works as designed)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz