![]() |
Automatisch hinzugefügte Units mit IFDEF klammern?
Halli Hallo,
Bei uns haben wir oft die Situation, dass wir eine neue Version eines Komponenten-Sets installieren, der Code aber noch mit älteren Versionen kompilierbar bleiben soll. Die Stellen, an denen Unterschiede im Code durch die neue Version auftreten klammern wir dann mit z.B.
Delphi-Quellcode:
aus. Das funktioniert natürlich nur wenn die INC-Datei mit den entsprechenden DEFINES in die Unit eingebunden wurde.
IFDEF VER_1_2_UP
Jetzt hat Delphi ja die "Angewohnheit" Units die von den Komponenten benutzt werden automatisch in die USES-Liste aufzunehmen. So kommt es dann dazu, dass eine Unit die nur in der neuen Komponentenversion vorkommt in die USES-Liste eingefügt wird. Diese automatisch eingefügte Unit klammern wir dann ebenfalls mit dem IFDEF für die jeweilige Version. In manchen Units bekommt Delphi es aber irgendwie nicht mit, dass dort solche eine neue Unit, geklammert durch IFDEF, schon in der Uses-Liste vorhanden ist und fügt sie einfach beim speichern noch einmal hinzu. Das führt natürlich hinterher zu einem Fehler beim Kompilieren. Im Moment muss dies dann mit einem externen Editor korrigiert werden bevor die Datei in die Versionsverwaltung wandert (sehr lästig). Irgendwie habe ich noch kein Muster erkennen können, warum es in manchen Units klappt (neue Uses-Einträge werden nicht nochmal hinzugefügt) und in anderen Units nicht (dort werden sie nochmal hinzugefügt). Hat jemand einen Tipp, worauf man achten sollte damit es in allen Unit auch mit per IFDEF geklammerten Units in der Uses-Liste klappt? Coa, Ralf |
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
Dabei korrigieren wir automatisch hinzugefügte Units, die gar nicht gebraucht werden, dann natürlich auch. Zum Beispiel wird manchmal System.Generics.Collections hinzugefügt. Eine Lösung, die das unnötige oder falsche Hinzufügen unterbindet, haben wir bisher nicht gesehen. Ein Problem ist das für uns allerdings auch nicht wirklich, da wir die Änderungen ja ohnehin überprüfen. |
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Du könntest die unerwünschte Unit ohne IFDEF in der uses-Anweisung belassen und eine gleichnamige, leere Unit im Projekt-Verzeichnis oder irgendwo in einem Verzeichnis des Suchpfads (die originalen Unit sollte dort ja eigentlich nicht zu finden sein) anlegen und mit in die Versionsverwaltung aufnehmen. Bei Umstellung auf die neue Version des Komponenten-Sets wird die Fake-Unit dann einfach entfernt.
Nicht nur die IDE kommt bei IFDEFs innerhalb der uses-Anweisung etwas aus dem Tritt. Übrigens kommt das Problem vermutlich daher, daß in der IDE bereits die neue Version des Komponenten-Sets installiert ist. |
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
Was ich ich verstehe, ist warum das IFDEF in der Uses-Liste in manchen Units genau das tut was es soll und in anderen nicht. Wobei das IFDEF sehr wohl erkannt wird, der Compiler beschwert sich ja hinterher, dass dort eine Unit doppelt drin ist... |
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
|
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Ich habe letzthin gelesen, dass man in solchen oder ähnlichen Fällen mit invertierter Logik ($IFNDEF und Unit im $ELSE-Zweig) weniger Probleme hat. Vielleicht hilft's bei dir ja auch.
|
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
![]() |
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
|
AW: Automatisch hinzugefügte Units mit IFDEF klammern?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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