AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DCC32: Probleme mit Bedingungen

Ein Thema von Ares · begonnen am 20. Mai 2009 · letzter Beitrag vom 20. Mai 2009
Antwort Antwort
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 09:39
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
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 11:20
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
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 12:17
Zitat von gammatester:
Die IDE scheint mit Version 1 zurecht zukommen.
Nein, das tut sie nicht. Denn bei folgendem Code rennt das Programm in beide $IFDEF Blöcke rein:
Delphi-Quellcode:
{$IFDEF VERSION 1}
WriteLn('Version 1');
{$ENDIF}
{$IFDEF VERSION 2}
WriteLn('Version 2');
{$ENDIF}
Der einzige Unterschied zwischen der IDE und Ares' dcc32.exe Aufruf ist, dass die IDE die "Version 1" Bedingung in Anführungszeichen setzt.
Code:
dcc32 -D"Version 1";Foo;Bar project.dpr
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 12:26
Leerzeichen sind halt in der Namenskonvention nicht vorgesehn

und ich weiß jetzt nicht, ob wowas eventuell geht
{$IFDEF 'VERSION 1'}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 12:28
Zitat von himitsu:
und ich weiß jetzt nicht, ob wowas eventuell geht
{$IFDEF 'VERSION 1'}
Wird mit
Code:
[Fehler] Unit1.pas(27): Fehlendes oder ungültiges Bedingungssymbol in der Anweisung '$IFDEF'
quittiert.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 12:34
Zitat von jbg:
Zitat von gammatester:
Die IDE scheint mit Version 1 zurecht zukommen.
Nein, das tut sie nicht. Denn bei folgendem Code rennt das Programm in beide $IFDEF Blöcke rein:
Deshalb habe ich scheint geschrieben :) Hab's allerdings nur mit Ares' Symbolen getestet. Deshalb noch 'ne Vermutung: IDE und DCC brechen das Parsen eines Symbolnamen im Quellcode beim ersten Leerzeichen ab.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

Re: DCC32: Probleme mit Bedingungen

  Alt 20. Mai 2009, 12:53
Zitat von gammatester:
Deshalb noch 'ne Vermutung: IDE und DCC brechen das Parsen eines Symbolnamen im Quellcode beim ersten Leerzeichen ab.
ist auch so und beim {$ENDIF} wird alles nach dem ENDIF ignoeriert (PS: so kann man sich z.B. keine Kommentare da mit bauen)


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}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:41 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