![]() |
{$define xyz} wird nicht erkannt
Moin zusammen.
Ich habe eine Unit welche ich in mehreren Porjekten (Dlls) verwenden möchte. Nun kann es Projekte geben, die an einer Stelle einer Funktion anderen Code ausführen sollen. Da habe ich mir gedacht, dass man einfach ein define macht, wenn man das möchte und ich die beiden Code-Varianten so in die Funktion schreibe:
Delphi-Quellcode:
Nur weiss ich nicht wo ich mein {$define xyz} hinsetzen muss. Ich habe es im Interface Teil einer Unit versucht, welche in diese Unit eingebunden wird und ich habe es mal in der Projekt Datei versucht.
{$ifdef xyz}
... ... {$else} ... ... {$endif} Leider wird das define nicht erkannt. Soll heißen der else Zweig wird verwendet. Wo muss ich das define platzieren bzw. gibt es in den Projekt Optionen eine Möglichkeit ein globales define zu definieren? Hab bis jetzt nix gefunden.... Vielen Dank |
Re: {$define xyz} wird nicht erkannt
Projekt -> Optionen -> Verzeichnisse/Bedingungen -> Bedingungen -> Definitionen
|
Re: {$define xyz} wird nicht erkannt
Entweder Projektoptionen oder sogenannte Include-Dateien die überalle wo das Define benötigt wird eingebunden werden.
|
Re: {$define xyz} wird nicht erkannt
Kann mir einer sagen was ich falsch mache?
Sobald ich jetzt Kompiliere kommt nicht die Meldung das a definiert ist. Warum? Mit include-Dateien hab ich das bisher immer gemacht, davon will ich aber weg. |
Re: {$define xyz} wird nicht erkannt
Solltest du nicht besser a als Unit2 in den Pfad schreiben ?!
|
Re: {$define xyz} wird nicht erkannt
Du musst ein komplettes Build machen (erzeugen), damit die Änderungen übernommen werden; einfaches Kompilieren genügt hier nicht.
Edit: das hat natürlich nichts damit zu tun, dass irgendetwas nicht gefunden wird. |
Re: {$define xyz} wird nicht erkannt
Hmmm, schade funktioniert beides nicht, weder feste Pfade, noch neu erzeugen / neues Projekt. :pale:
|
Re: {$define xyz} wird nicht erkannt
was steht denn jetzt im pfad bei dir?
|
Re: {$define xyz} wird nicht erkannt
Such dir eins aus, alle schon getestet (neu erzeugt, dann neu kompiliert):
Code:
Edit:
uConst
uConst;Debug uConst.pas uConst.pas;Debug C:\Delphi\Projekte\G15\TaskMan\uConst C:\Delphi\Projekte\G15\TaskMan\uConst;Debug C:\Delphi\Projekte\G15\TaskMan\uConst.pas C:\Delphi\Projekte\G15\TaskMan\uConst.pas;Debug C:\Direktiven.txt Arrg, jetz hab ich es... Einfach die Defines in die 'Definitionsspalte' hinzufügen. (da kommen keine Dateien rein...) |
Re: {$define xyz} wird nicht erkannt
a seh ich aber nirgends
|
Re: {$define xyz} wird nicht erkannt
"a" ist auch eine Compiler-Directive und keine Unit. Das "a" wird nicht per Pfad eingebunden, sondern die Unit, die die Definition enthält.
Wie sieht es mit der Reihenfolge der Einbindung ins Projekt aus. Die Unit mit {$Define a} muss vor der Unit die es benötigt compiliert werden. Die Direktive in den Projekt-Optionen hinerlegen oder eine *.inc als ersten Eintrag einbinden wäre dann ja noch vorgeschlagen und wohl auch resistenter gegen Änderung der Reiehnfolge durch die IDE. |
Re: {$define xyz} wird nicht erkannt
Zitat:
In Delphi ist jede Datei/Unit eigenständig und da werden keine Compilerdirektiven an andere Units weitergegeben es gibt also praktisch nur 3 Orte, wo man diese Definieren kann * am Anfang einer Unit/dpr und dann gilt sie auch nur in dieser Unit (abgesehn von einigen Direktiven, welche direk an den Compiler gerichtet sind) * in einer Include-Datei ( {$i ...} / {$include ...} ) so arbeitet z.B. FastMM, die JEDIs * in den Projektoptionen (bei Kmandozeilencompiler via Parameter) so mach ich es seit einer Weile, denn das Hat den Vorteil, daß man für eine gemeinsame Datei/Unterprojekt in unterschiedlichen Projekten auch unterschiedliche Optionen wählen kann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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-2025 by Thomas Breitkreuz