AGB  ·  Datenschutz  ·  Impressum  







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

IFDEF/IFNDEF und Units

Ein Thema von DevilsCamp · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

IFDEF/IFNDEF und Units

  Alt 22. Jan 2007, 16:08
Ich habe zwei Projekte, die in einer Projektgruppe zusammengefasst werden.

Projekt 1:
Delphi-Quellcode:
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.
Form1:
Delphi-Quellcode:
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.
Projekt2:
Delphi-Quellcode:
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.
Form2:
Delphi-Quellcode:
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.
ZusatzUnit.pas:
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.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: IFDEF/IFNDEF und Units

  Alt 22. Jan 2007, 16:27
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
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#3

Re: IFDEF/IFNDEF und Units

  Alt 22. Jan 2007, 16:57
Danke, das hat geholfen.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

Re: IFDEF/IFNDEF und Units

  Alt 22. Jan 2007, 17:34
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.
Uli Gerhardt
  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 18:25 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