Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Präprozessordirektive(conditional compile) Unit-übergreifend (https://www.delphipraxis.net/114479-praeprozessordirektive-conditional-compile-unit-uebergreifend.html)

Andy386 26. Mai 2008 10:02


Präprozessordirektive(conditional compile) Unit-übergreifend
 
Hallo,

ich würde sehr gerne eine vorhandene (Unter-)Unit in ein Projekt einbinden, allerdings brauche ich in dieser Unit Zugriff auf mein main-form. Dennoch soll die Unit auch noch in dem alten Projekt funktionieren.
Daher würde ich gerne über Präproessordirektiven die Complierung so steuern, dass z.B. nur beim Verwenden im neuen Projekt auch die neue, benötigte Unit eingebunden wird.
Hier das Konzept:

Hauptunit (U_microscope):
Delphi-Quellcode:
interface
{$DEFINE MICRO}
uses
  Windows,..., unterunit;
unterunit:
Delphi-Quellcode:
implementation
{$IFDEF MICRO}
uses U_microscope;
{$ENDIF}
[edit] zu schnell gedrückt...
Das Ganze geht leider so nicht, delphi ist scheinbar der Meinung, dass MIRCO nicht definiert ist.
Gibt es einen Weg, den Wert global zu defineren ?
Oder hilft nur die ganze Unit zu kopieren ?[/edit]

Dezipaitor 26. Mai 2008 10:03

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
Entweder erstellst du eine include-Datei und bindest diese überall ein, wo notwendig - sie nethält die Direktiven. Oder du verwendest die Projektoptionen. Dort kann man auch Bedinungen einsetzen.

Andy386 26. Mai 2008 10:21

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
Ah, danke für den Tipp mit den Projektoptionen !
Jetzt funzt alles wie gewünscht !

Aber warum erkennt Delphi meine Codedirektive nicht an (auch wenn sie als zweite Zeile in der Projektdatei steht) ?

Dezipaitor 26. Mai 2008 10:44

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
Weil Units eben davon nicht betroffen sind. Es sind eigenständige Quellcodes - im Gegensatz zu C++, wo die Quellcodes "kopiert "werden.

Andy386 26. Mai 2008 13:56

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
Ok. Ich werd versuchen, dass zu beachten, Danke !

alzaimar 26. Mai 2008 14:58

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
Wenn Du in Deiner Unit auf die MainForm zugreifst, verliert diese Unit ihre Unabhängigkeit und wird wohl kaum noch für andere Projekte zu gebrauchen sein. Realisiere die Funktionalität lieber über ein Event (Callback).

Andy386 27. Mai 2008 12:39

Re: Präprozessordirektive(conditional compile) Unit-übergrei
 
alzaimar, du hast natürlich Recht. :thumb:
Ich habe nur leider nicht ganz so viel Zeit, unscheinbare Änderungen zu machen, deswegen hab ich mich für Präprozessdirektiven entschieden... Ist hässlich, anfällig und unsauber...


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