Autor Beitrag
lincore
Hält's aus hier
Beiträge: 15

Kubuntu 8.04, Debian lenny, Windows XP, Windows Vista
Delphi 2009, C++, Python, Lua
BeitragVerfasst: Fr 09.01.09 19:36 
Moin,

ich spiele gerade ein bisschen mit bedingter Kompilierung herum und habe festgestellt, dass per Compilerdirektiven definierte Symbole anscheinend nur in der Unit gelten, in der sie deklariert wurden. So habe ich in Global.pas folgendes stehen:
ausblenden Delphi-Quelltext
1:
{$DEFINE ALLOC_CONSOLE}					

In Main.pas wiederum steht:
ausblenden Delphi-Quelltext
1:
{$IFDEF ALLOC_CONSOLE}allocConsole;{$ENDIF}					

Beim Start des Programms sehe ich kein zweites Konsolenfenster. Wenn ich ALLOC_CONSOLE hingegen in Main.pas selbst definiere, läuft alles wie gewünscht.

Mal davon abgesehen, dass bedingte Kompilierung in meinem Fall wohl absolut überdimensioniert ist:
Ist es tatsächlich so gewollt, dass diese Symbole nur in der Unit bekannt sind, in der sie deklariert wurden? Oder habe ich in Folge meines übermäßigen nachmittaglichen Kaffeekonsums einen Fehler eingebaut? Im ersten Fall scheint die Delphi Hilfe dies jedenfalls als allgemein bekannt vorauszusetzen, denn dieses Verhalten wird dort (afaik) mit keiner Silbe erwähnt.

Nachdenkliche Grüße,
lincore
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Fr 09.01.09 19:46 
Symbole sind im dem Scope gültig, in dem sie definiert werden. Ansonsten musst du sie global definieren,
entweder in einer Datei die via {$I ...} in jede Unit eingbunden wird, oder imho per Compiler- Direktive in dem
Projekt unter Projectoptionen-Delphi Compiler - Bedingungen.

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
lincore Threadstarter
Hält's aus hier
Beiträge: 15

Kubuntu 8.04, Debian lenny, Windows XP, Windows Vista
Delphi 2009, C++, Python, Lua
BeitragVerfasst: Fr 09.01.09 20:11 
Okay MSCH, danke für die Aufklärung!

lincore