AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Funktion einer Unit nur in bestimmten Projekten aktivieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion einer Unit nur in bestimmten Projekten aktivieren

Ein Thema von Angel4585 · begonnen am 30. Aug 2007 · letzter Beitrag vom 30. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Funktion einer Unit nur in bestimmten Projekten aktivieren

  Alt 30. Aug 2007, 14:08
Hallo,

ich habe eine Unit in deren initialization Block ein Objekt erzeugt wird.

Diese unit binde ich in zwei verschiedenen Projekten ein.
Nun soll dieses Objekt aber nur in einem der beiden Projekten erzeugt werden, im anderen würde ich die Zeilen gerne einfach ausklammern, aber ohne jetzt die Unit verdoppeln zu müssen.
Geht das irgendwie mit Compilerdirektiven oder so?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:11
Lagere den Code in eine Init-Funktion aus, welche du wenn gewünscht explizit aufrufst
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:12
Freilich

{$IFDEF MeinCompilerdef}
initialization
....
{$ENDIF MeinCompilerdef}
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:13
Zitat von Bernhard Geyer:
Freilich

{$IFDEF MeinCompilerdef}
initialization
....
{$ENDIF MeinCompilerdef}
ja aber die muss ich in der selben unit definieren oder?
oder tuts das auch in der projekt-unit des jeweiligen projekts?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:23
Zitat von Angel4585:
Zitat von Bernhard Geyer:
Freilich

{$IFDEF MeinCompilerdef}
initialization
....
{$ENDIF MeinCompilerdef}
ja aber die muss ich in der selben unit definieren oder?
oder tuts das auch in der projekt-unit des jeweiligen projekts?
In den Projekt-Optionen kannst du auch Compiler-Bedingungen angegeben. Dort wäre dann der richtige Platz für sowas.

Allerdings hab ich die Erfahrung gemacht, dass es problematisch ist, da du dann beim öffnen des anderen Projekts erstmal das ganze Projekt aktualisieren solltest, damit diese Unit auch wirklich mit der Compiler-Bedingung kompiliert wird. Ansonsten passiert es ganz schnell, dass dir dann die initialization-Sektion fehlt, oder halt drin ist in dem Projekt, wo sie nicht drin sein soll. Besser wäre es also wirklich eine extra Init-Funktion zu nehmen oder versuchen den Teil, der nur in einem Projekt verwendet wird auszulagern.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:40
Zitat von jim_raynor:
Zitat von Angel4585:
Zitat von Bernhard Geyer:
Freilich

{$IFDEF MeinCompilerdef}
initialization
....
{$ENDIF MeinCompilerdef}
ja aber die muss ich in der selben unit definieren oder?
oder tuts das auch in der projekt-unit des jeweiligen projekts?
In den Projekt-Optionen kannst du auch Compiler-Bedingungen angegeben. Dort wäre dann der richtige Platz für sowas.

Allerdings hab ich die Erfahrung gemacht, dass es problematisch ist, da du dann beim öffnen des anderen Projekts erstmal das ganze Projekt aktualisieren solltest, damit diese Unit auch wirklich mit der Compiler-Bedingung kompiliert wird. Ansonsten passiert es ganz schnell, dass dir dann die initialization-Sektion fehlt, oder halt drin ist in dem Projekt, wo sie nicht drin sein soll. Besser wäre es also wirklich eine extra Init-Funktion zu nehmen oder versuchen den Teil, der nur in einem Projekt verwendet wird auszulagern.
Das mit den Projektoptionen war ein guter Tipp, funzt perfekt.
Wenn ich in der Projekt-Unit oben ein {DEFINE XYZ} reinmache klappt das nich
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#7

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:43
Zitat von Angel4585:
Das mit den Projektoptionen war ein guter Tipp, funzt perfekt.
Wenn ich in der Projekt-Unit oben ein {DEFINE XYZ} reinmache klappt das nich
Das täte mich auch interessieren. Hatte letztens was ähnliches, und da hat das auch nur über die Optionen funktioniert. Woran liegt das?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:48
ok jetz hab ich bestimmt en Virus!
Ich wollte das andere projekt compilieren bei dem das raus soll un dann wirds trotzdem rein gemacht, obwohl in den Projektoptionen von dem zweiten nix drin ist.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 14:51
Zitat von jim_raynor:
Allerdings hab ich die Erfahrung gemacht, dass es problematisch ist, da du dann beim öffnen des anderen Projekts erstmal das ganze Projekt aktualisieren solltest, damit diese Unit auch wirklich mit der Compiler-Bedingung kompiliert wird. Ansonsten passiert es ganz schnell, dass dir dann die initialization-Sektion fehlt, oder halt drin ist in dem Projekt, wo sie nicht drin sein soll. Besser wäre es also wirklich eine extra Init-Funktion zu nehmen oder versuchen den Teil, der nur in einem Projekt verwendet wird auszulagern.
man sollte immer alles lesen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Funktion einer Unit nur in bestimmten Projekten aktivier

  Alt 30. Aug 2007, 15:02
Zitat von Phoenix:
Zitat von Angel4585:
Das mit den Projektoptionen war ein guter Tipp, funzt perfekt.
Wenn ich in der Projekt-Unit oben ein {DEFINE XYZ} reinmache klappt das nich
Das täte mich auch interessieren. Hatte letztens was ähnliches, und da hat das auch nur über die Optionen funktioniert. Woran liegt das?
Optionen für das Projekt (über Menu "Optionen/Verzeichnisse Bedingungen", Definitionen) ist was anderes als wenn man es in die Projektdatei schreibt. In einer Datei definierte Defines wirken nur in dieser Datei.

Alternativ zu den Projektoptionen könntest du dir eine .inc-Datei anlegen und diese dann in allen deinen Units verwenden ({$INCLUCDE ...}
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:07 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