Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Globale Compilerdirektiven!? (https://www.delphipraxis.net/37006-globale-compilerdirektiven.html)

Dust Signs 29. Dez 2004 14:31


Globale Compilerdirektiven!?
 
Kurze Frage: kann es sein, dass {$DEFINE}-Direktiven nicht global verwendet werden können? Beispielcode:

Delphi-Quellcode:
program dstpclt;

{$DEFINE STANDALONE} //Standalone EXE (non-networking)

uses
  FastShareMem,
  Forms
  {$IFDEF STANDALONE}
  , ClientMain in 'ClientMain.pas' {StandaloneMainForm}
  {$ENDIF};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'DSTP Terminplaner 2.0 Client';

  {$IFDEF STANDALONE}
    Application.CreateForm(TStandaloneMainForm, StandaloneMainForm);
  {$ENDIF}

  Application.Run;
end.
Der Code innerhalb der {$DEFINE}-Direktive in ClientMain.pas wird nicht kompiliert:

Delphi-Quellcode:
...

{$IFDEF STANDALONE}
function SendRequest(Request: String): Integer;
begin
  Result := _SendRequest('127.0.0.1', '$public', Request);
end;
{$ENDIF}

...
Dust Signs

CalganX 29. Dez 2004 14:35

Re: Globale Compilerdirektiven!?
 
Hi,
Compilerdirektiven sind AFAIK normalerweise global, allerdings keine Defines, die du meinst.
Was du machen kannst, ist eine zusätzliche Unit erstellen, in der du alles definierst, was du global brauchst und diese Unit (bzw. einfacher wäre eine Datei, die du dann includest) einbindest.

Chris

Dust Signs 29. Dez 2004 14:44

Re: Globale Compilerdirektiven!?
 
Aber warum funktioniert mein Code dann nicht :? ?

Dust Signs

Muetze1 29. Dez 2004 16:45

Re: Globale Compilerdirektiven!?
 
Moin!

Wenn du ein {$DEFINE xxx} in einer Unit schreibst, dann gilt diese nur in der Unit und ist nur da gültig. Wenn du es projektweit haben willst, dann nutze kein {$DEFINE xxx} zum definieren sondern Projekt->Optionen->Verzeichnisse/Bedingungen->Bedingungen->Definitionen und trage dort die Schlüsselwörter ein - mit Semikolon werden diese abgetrennt wenn du mehrere hast. Also in deinem Falle einfach ein STANDALONE dort eintragen.

Andere Möglichkeit wie es z.B. die JEDI Leute vorziehen ist die Benutzung einer Include Datei die dann von jeder Unit angezogen wird. Darin dann diese {$DEFINE xxx} positionieren.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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