Einzelnen Beitrag anzeigen

Achim Kalwa

Registriert seit: 2. Apr 2005
Ort: Lienen
110 Beiträge
 
Delphi 12 Athens
 
#5

AW: Automatisches hinzufügen von System.Actions deaktivieren

  Alt 11. Nov 2020, 12:34
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
Achim
  Mit Zitat antworten Zitat