Ich würde aber nicht die
Unit direkt austauschen.
Es gibt eine
Unit/Klasse mit den Basisfunktionen.
Davon wird dann z.B. jeweils Einie für die INI und eine für die Registry abgeleitet.
Alles was nun auf diese Funktionen zugreifen will, bekommt ein Property vom Baisityp.
Nun wird man beim Erstellen/Laden des Programms die Instanz (INI oder Regisrty) erstellt und allen anderen Teilen zugewiesen, welche sie benötigen.
So kann man auch noch beim Laden entscheiden und z.B. so sein Programm entweder für eine portable oder eine lokale Speicherung einstellen.
Im Notfall gibt es eben irgendwo ein "globales" Singleton mit den Basisfunktionen, bei Welchem später eine Instanz mir der entgültigen Funktion (INI oder Registry) registriert wird und an das alle Zugriffe weitergeleitet werden.
Wenn ich eine Funktion
procedure LoadData(data: TStream);
habe, dann kann ich der geben was ich will, aber ich komm doch nicht auf die Idee in den Sourcen die
Unit auszutauschen, wo TStream implementiert ist und dafür "hart" ein TStream (mit der Funktion von TFileStream) einzubauen oder eben ein TStream (mit der Funktion fon TMemoryStream) oder ....