Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Automatisches hinzufügen von System.Actions deaktivieren (https://www.delphipraxis.net/206028-automatisches-hinzufuegen-von-system-actions-deaktivieren.html)

backdraft 11. Nov 2020 10:15

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

Der schöne Günther 11. Nov 2020 10:40

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Du siehst doch in deiner Versionsverwaltung direkt
  1. Dass die Dateien verändert wurden
  2. Und was hinzu gefügt wurde

Wenn du diese Änderungen nicht übernimmst ist doch alles in Butter. Aber ja, nervig ist es schon.

Uwe Raabe 11. Nov 2020 11:25

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Leg doch einfach in deinem XE-Projekt eine leere System.Actions.pas an.

Uwe Raabe 11. Nov 2020 11:29

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

Achim Kalwa 11. Nov 2020 11:34

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Zitat:

Zitat von backdraft (Beitrag 1477099)
Vielleicht gibt es ja einen Knopf, wo man das ausschalten kann.

Einen solchen Knopf gibt es nicht. Aber es gibt mind. zwei Möglichkeiten um das Problem zu umgehen:

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:
unit System.Actions;
// nur für Delphi XE2 und älter erforderlich.
interface
implementation
end.
Delphi XE compiliert diese Units einfach mit; der Fehler tritt nicht mehr auf.


2. Die IDE per IFDEFs überlisten. Nachstehenden Code in alle betroffenen Forms einfügen:
Code:
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}
  ...
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).
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

backdraft 11. Nov 2020 15:06

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Zitat:

Zitat von Achim Kalwa (Beitrag 1477112)
Zitat:

Zitat von backdraft (Beitrag 1477099)
Vielleicht gibt es ja einen Knopf, wo man das ausschalten kann.

Code:
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}
  ...

Das mit einer Direktive hab ich versucht.
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 :-)

Uwe Raabe 11. Nov 2020 15:11

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Zitat:

Zitat von backdraft (Beitrag 1477146)
Ich wusste aber gar nicht, dass man "CompilerVersion" abfragen kann.
Seit wann geht das?

Ich denke mal seit Delphi 6: Compiler Versions

backdraft 11. Nov 2020 15:12

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Hmm, aber folgendes klappt wieder nicht :-(

Code:
{$IF CompilerVersion >= 24}
System.Actions,
{$ENDIF}
Wohl ein Parser Problem :-(
Scheint wirklich nur auf Lokale DEFINEs zu reagieren.

Uwe Raabe 11. Nov 2020 15:24

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.

backdraft 11. Nov 2020 15:25

AW: Automatisches hinzufügen von System.Actions deaktivieren
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1477150)
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.

Sorry, man sollte zu Ende lesen.
Aber wenn die Lösung zum Greifen nach ist ... :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 Uhr.
Seite 1 von 2  1 2      

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