![]() |
IFDEF/IFNDEF und Units
Ich habe zwei Projekte, die in einer Projektgruppe zusammengefasst werden.
Projekt 1:
Delphi-Quellcode:
Form1:
program Proj1;
uses Forms, SysUtils, Form1 in 'Form1.pas' {Form1}, ZusatzUnit in 'ZusatzUnit.pas', NochneUnit in 'NochneUnit.pas'; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Delphi-Quellcode:
Projekt2:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} uses ZusatzUnit; end.
Delphi-Quellcode:
Form2:
program Proj2;
{$DEFINE PROJEKTSCHALTER2} uses Forms, SysUtils, Form2 in 'Form2.pas' {Form2}, ZusatzUnit in 'ZusatzUnit.pas'; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.Run; end.
Delphi-Quellcode:
ZusatzUnit.pas:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm1; implementation {$R *.dfm} uses ZusatzUnit; end.
Delphi-Quellcode:
unit ZusatzUnit;
interface {$IFNDEF PROJEKTSCHALTER2} function NutzeNochneUnit: Integer; {$ENDIF} procedure NutzeNichtNochneUnit; implementation {$IFNDEF PROJEKTSCHALTER2} uses NochneUnit; procedure NutzeNochneUnit; begin Result := FunktionAusNochneUnit * 3; end; {$ENDIF} procedure NutzeNichtNochneUnit; begin MacheIrgendwas; end; end. NochneUnit.pas
Delphi-Quellcode:
unit NochneUnit;
interface function FunktionAusNochneUnit: Integer; implementation function FunktionAusNochneUnit: Integer; begin Result := 7; end; end. Beide Projekte speichern ihre compilierten Units in VERSCHIEDENEN Verzeichnissen. Nun habe ich das Problem, dass beim Compilieren von Proj2 der Fehler kommt, NochneUnit sei nicht zu finden. Ist dies eine normale Fehlermeldung? Wenn ja, warum? Schliesslich sage ich dem Compiler doch, dass NochneUnit nur dann verwendet werden soll, wenn PROJEKTSCHALTER2 NICHT definiert ist. Und in Proj2 wird es doch gesetzt. |
Re: IFDEF/IFNDEF und Units
Hi,
das Define, dass Du verwendest gilt nur für die Unit, in der Du es verwendest, nicht global. Willst Du das ganze globler machen, musst Du diesen Schalter in den Projektoptionen unter Bedingungen angeben (oder z.B. eine inc Datei in jeder Unit mittels Include einbinden, die dann deine Schalter enthält). Gruß Der Unwissende |
Re: IFDEF/IFNDEF und Units
Danke, das hat geholfen. :thumb:
|
Re: IFDEF/IFNDEF und Units
Hi!
Vielleicht kannst du auch die in ZusatzUnit und NochneUnit enthaltene Funktionalität etwas zwischen beiden Units umverteilen (u.U. auch eine dritte Unit einführen), so dass die bedingte Kompiliererei überflüssig wird. (Sorry, wenn ich dir hier einen total banalen Vorschlag gebracht haben sollte, den du schon längst durchdacht und verworfen hast. :)) Uli. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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