![]() |
Automatisches hinzufügen von System.Actions deaktivieren
Hallo zusammen,
gibt es eine Möglichkeit das automatische hinzufügen von der IDE zu unterbinden, dass System.Actions oder System.ImageList hinzugefügt wird? Mein Problem ist, dass ich manche Forms habe, die sich zwei Anwendungen teilen. Die eine läuft schon unter 10.3, die andere noch unter XE, weil diese noch nicht umgestellt wurde. Öffne ich eine Form in 10.3 und ändere was, sind dann immer die System.Actions mit drin, was dann wieder erst auffällt, wenn man in XE kompiliert. Vielleicht gibt es ja einen Knopf, wo man das ausschalten kann. Danke für eure Tipps Oliver |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Du siehst doch in deiner Versionsverwaltung direkt
Wenn du diese Änderungen nicht übernimmst ist doch alles in Butter. Aber ja, nervig ist es schon. |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Leg doch einfach in deinem XE-Projekt eine leere System.Actions.pas an.
|
AW: Automatisches hinzufügen von System.Actions deaktivieren
Alternativ kannst du auch im XE-Projekt einen Unit-Alias für System.Actions anlegen: z.B. System.Actions = System
|
AW: Automatisches hinzufügen von System.Actions deaktivieren
Zitat:
1. Auf den Rechnern, welche noch mit Delphi XE arbeiten, einfach Dummy-Units System.Actions.pas und System.ImageList.pas erstellen und im Library-Pfad ablegen (aber nicht in die Versionsverwaltung übernehmen):
Code:
Delphi XE compiliert diese Units einfach mit; der Fehler tritt nicht mehr auf.
unit System.Actions;
// nur für Delphi XE2 und älter erforderlich. interface implementation end. 2. Die IDE per IFDEFs überlisten. Nachstehenden Code in alle betroffenen Forms einfügen:
Code:
Diese "umgekehrte" Logik ist erforderlich, weil die IDE bzw. Code Completion die CompilerVersion nicht auswertet. Die naheliegende Idee auf {$IF CompilerVersion >= 24} zu prüfen funktioniert darum nicht (erst recht nicht in einer $include-Datei).
unit <DeinFormName>;
{$DEFINE USE_SYSTEM_ACTIONS} {$IF CompilerVersion < 24} {$UNDEF USE_SYSTEM_ACTIONS} {$ENDIF} uses SysUtils, {$IFDEF USE_SYSTEM_ACTIONS} System.Actions, System.ImageLst, {$ENDIF} ... Die IDE (ab XE3) erkennt, dass System.Actions und System.ImageList schon in der Uses-Liste vorhanden ist, und fügt diese nicht mehr hinzu. Die ältere IDE hat sowieso kein Verlangen, diese Units hinzuzufügen; und der Compiler wird durch das IFDEF davon abgehalten, diese Units zu compilieren. HTH Achim |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Zitat:
Wenn ich NUR auf DEFINEs aus der Unit zugreife klappt das auch, dass er das nicht ergänzt. So wie in deinem Code. Ich hatte dann eine Compilers.inc eingebettet und gegen DELPHI_XE2_UP abgefragt, weil es so auch bei den anderen Units oder unserer Library ist. Das klappt dann nicht - er ergänzt es trotzdem. Ich wusste aber gar nicht, dass man "CompilerVersion" abfragen kann. Seit wann geht das? Das löst auf jeden Fall mein Problem, danke :-) |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Zitat:
![]() |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Hmm, aber folgendes klappt wieder nicht :-(
Code:
Wohl ein Parser Problem :-(
{$IF CompilerVersion >= 24}
System.Actions, {$ENDIF} Scheint wirklich nur auf Lokale DEFINEs zu reagieren. |
AW: Automatisches hinzufügen von System.Actions deaktivieren
Das hatte Achim doch schon geschrieben, dass die IDE diese Bedingungen nicht auswertet. Unter anderem deswegen bin ich auch kein Freund dieser Art Lösung.
|
AW: Automatisches hinzufügen von System.Actions deaktivieren
Zitat:
Aber wenn die Lösung zum Greifen nach ist ... :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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