Hallo zusammen,
ich möchte ein System-
Unit ändern, und in meiner Library neu kompilieren lassen,
möglichst so das alle statischen Verweise darauf in anderen Orginal System-Units und Libraries umgelenkt werden.
Ich nehme als Beispiel mal FMX.ListView
FMX.ListView.pas // <== dies enthält ein paar Fixes, und das möchte ich in meinem Projekt nutzen
das
Unit includiert ein paar weitere Units
Delphi-Quellcode:
Uses
...
, FMX.ListView.Adapters.Base
, FMX.ListView.Appearances
, FMX.ListView.Types.pas
, FMX.ListView.iOS
...
Die nehme ich vorsichtshalber auch mit in mein Projekt, damit auf jden Fall alle zusammenhängenden Units neu kompiliert werden.
Wenn ich die in mein Projektverzeichnis lege, und in meine Projekt
DPR einfüge
Delphi-Quellcode:
program T342_Test;
{$R *.dres}
uses
System.StartUpCopy,
FMX.Forms,
UMain_Frm in 'UMain_Frm.pas' {Form_Main},
UMain_Modules in 'UMain_Modules.pas',
FMX.ListView in 'FMX.ListView.pas',
FMX.ListView.Types in 'FMX.ListView.Types.pas',
FMX.ListView.iOS in 'FMX.ListView.iOS.pas',
FMX.ListView.Adapters.Base in 'FMX.ListView.Adapters.Base.pas',
FMX.ListView.Appearances in 'FMX.ListView.Appearances.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm_Main, Form_Main);
Application.Run;
end.
.. dann scheint es zu funktionieren wie gewünscht.
Der Debugger kann die
DCU-Units richtig zuordnen, die Debug-Breaks scheinen zu stimmen.
D.h. ich vermute das die neu kompilierten Units auch korrekt in meinem Projekt angemommen sind.
Erste Frage:
Wie
kann ich sicher sein das nicht ein anderes System-Unit noch die Orginale Unit benutzt,
und ich zwei "
DCU-Versionen" in mein Projekt einbinde ?
Ich würde dieses Chaos in der
DPR gerne aufräumen, und leider erlaubt die
IDE/Compiler keine Unterverzeichnisse an bestimmten Stellen.
Deshalb mache ich das sicherheitshalber immer so wie oben.
Meine zweite Frage ist,
wie könnte ich diese Fixes besser zusammenfassen ?,
am Besten so das ich nicht alle Units (keine) in der
DPR auflisten muss.
A.) Meine Versuche das in Unterverzeichnisse zu legen funktioniert anscheinend nicht zuverlässig
Project\TestProject.dpr
Project\Fixes\FMX.ListView.pas
...
B. Meine Versuche nur eine zentrale Fixes.pas
Unit in das Projektverzeichnis zu legen funktioniert anscheinend auch nicht sicher.
Project\TestProject.dpr
Project\Fixes.pas //<=============
Project\Fixes\FMX.ListView.pas
...
mit der zentralen
Unit in der
DPR
Delphi-Quellcode:
unit Fixes;
interface
Uses
FMX.ListView
, FMX.ListView.Types
...
implementation
end.
C. Ich habe auch probiert die Orginal-Units per include in Wrapper-Units zu laden,
um so zumindest verschiedene
IDE-Versionen zu kapseln, so in der Art
Delphi-Quellcode:
unit FMX.ListView;
{$IF DEFINED( RX1040 ) }
{$I FMX.ListView_Rx1040 }
{$ELSEIF DEFINED( RX1033 ) }
{$I FMX.ListView_Rx1033 }
{$ENDIF }
Das geht wenn man in den Varianten-Units den Header weglässt, löst aber nicht mein eigentliches Problem, das ich die Files genre besser sortieren würde.
Bin ich der Einzige dem solche Chaos-Anordnungen auf die Nerven gehen,
oder
hat vielleicht jemand einen guten Tipp wie man das Ganze besser, sauberer organisieren könnte ?