AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Automatisch hinzugefügte Units mit IFDEF klammern?
Thema durchsuchen
Ansicht
Themen-Optionen

Automatisch hinzugefügte Units mit IFDEF klammern?

Ein Thema von Ralf Kaiser · begonnen am 16. Feb 2018 · letzter Beitrag vom 16. Feb 2018
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 07:39
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. IFDEF VER_1_2_UP aus. Das funktioniert natürlich nur wenn die INC-Datei mit den entsprechenden DEFINES in die Unit eingebunden wurde.

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
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 08:04
Im Moment muss dies dann mit einem externen Editor korrigiert werden bevor die Datei in die Versionsverwaltung wandert (sehr lästig).
Bei uns wandert keine Unit in das Repository bevor nicht jede Änderung manuell geprüft wurde (sprich per Doppelklick im Commitdialog durch die Dateien gehen und die Änderungen ggf. auch für einen anderen Commit zurückstellen). Ohne Überprüfung einzuchecken fände ich auch höchst fahrlässig.

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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 08:53
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 09:10
Übrigens kommt das Problem vermutlich daher, daß in der IDE bereits die neue Version des Komponenten-Sets installiert ist.
Ja, natürlich ist die neue Version installiert (sonst würde Delphi ja gar nicht "auf die Idee" kommen eine der neuen Units einzufügen.

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...
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 09:29
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...
Der Compiler schon, aber der uses-Parser der IDE ist da etwas schlichter gestrickt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 13:46
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 16:50
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.
Das hatte ich auch mal bemerkt.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

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

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 16:57
Das habe ich gemeint.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Automatisch hinzugefügte Units mit IFDEF klammern?

  Alt 16. Feb 2018, 17:29
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.
OK. Danke für den Hinweis. Werde ich am Montag mal ausprobieren.
Ralf Kaiser
  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 19:42 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