![]() |
DCC32: Probleme mit Bedingungen
Hallo!
Ich möchte gerne ein Projekt mit dem Kommandozeilencompiler erstellen. In dem Projekt verwende ich verschiedene Compilerschalter für die bedingte Compilierung mit der ich verschiedene Versionen des Programms erstellen kann: dcc32 -DVersion1;Bedingung2;Bedingung3 MeinProjekt bzw. dcc32 -DBedingung2;Bedingung3 MeinProjekt Nun habe ich das Problem, dass aus irgendeinem Grund die Bedingung "Version 1" nicht reagiert. Das heißt egal ob ich diese Bedingung angebe oder nicht, dass Programm compiliert immer so, als ob diese Bedingung erfüllt ist. Alle anderen Bedingungen arbeiten korrekt und mir ist schleierhaft wieso das nicht auch auf diese Bedingung zutrifft. Wenn ich in der IDE Arbeite stelle ich die Bedingungen in den Projektoptionen ein. Die Bedingungen sind also nirgendwo im Quelltext definiert, etc. Aber irgendwo her muss der Kommandozeilencompiler die Bedingung ja bekommen, sonst würde er das Programm ja anders compilieren? Aber wo kann ich danach suchen? Besten Dank Ares |
Re: DCC32: Probleme mit Bedingungen
Wenn das Leerzeichen in "Version 1" kein Zufall ist, kann es nicht funktionieren. Denn beim dcc32-Aufruf ist keins vorhanden, dort steht Version1. Wenn im Sourcecode Version1 getestet wird, ist alles OK. Die IDE scheint mit Version 1 zurecht zukommen. Bei dcc32 -DVersion 1 wird versucht die Datei 1 mit Symbol Version zu compilieren. Mit "Version 1" kommt dcc32 offensichtlich nicht klar.
Im übrigen scheint es mir schlechter Stil zu sein, Bedingte-Symbol-Namen mit Leerzeichen zu vergeben; und mE sollte die IDE dies auch nicht erlauben. Fazit: Verwende Version1 und alles sollte funktionieren. Gammatester |
Re: DCC32: Probleme mit Bedingungen
Zitat:
Delphi-Quellcode:
Der einzige Unterschied zwischen der IDE und Ares' dcc32.exe Aufruf ist, dass die IDE die "Version 1" Bedingung in Anführungszeichen setzt.
{$IFDEF VERSION 1}
WriteLn('Version 1'); {$ENDIF} {$IFDEF VERSION 2} WriteLn('Version 2'); {$ENDIF}
Code:
dcc32 -D"Version 1";Foo;Bar project.dpr
|
Re: DCC32: Probleme mit Bedingungen
Leerzeichen sind halt in der Namenskonvention nicht vorgesehn
und ich weiß jetzt nicht, ob wowas eventuell geht
Delphi-Quellcode:
{$IFDEF 'VERSION 1'}
|
Re: DCC32: Probleme mit Bedingungen
Zitat:
Code:
quittiert.
[Fehler] Unit1.pas(27): Fehlendes oder ungültiges Bedingungssymbol in der Anweisung '$IFDEF'
|
Re: DCC32: Probleme mit Bedingungen
Zitat:
|
Re: DCC32: Probleme mit Bedingungen
Zitat:
Delphi-Quellcode:
// drum entspricht dieses hier
{$IFDEF BEDINGUNG kommentar} ... {$ENDIF BEDINGUNG} // jenem {$IFDEF BEDINGUNG} ... {$ENDIF} // und das hier {$IFDEF VERSION 1} // wäre dann eben nur dieses {$IFDEF VERSION} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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