Delphi-Quellcode:
type
TWin7 = class(TUpdateEngine)
...
end;
TWinVista = class(TUpdateEngine)
...
end;
TWinXP = class(TUpdateEngine)
...
end;
function GetEngine(): TUpdateEngine;
begin
if TheSystem = '7' then
Result := TWin7.Create
else if TheSystem = 'Vista' then
Result := TWinVista.Create
else if TheSystem = 'XP' then
Result := TWinXP.Create
else
Fehler;
end;
Tja und nun könnte man extern in den Ableger casten, welcher erstellt wurde.
Delphi-Quellcode:
var Engine: TUpdateEngine;
Engine := GetEngine;
Engine.MachWasWelchesÜberallGeht;
if Engine.isWinXP then // oder if Engine is TWinXP then
TWinXP(Engine).MachEtwasWelchesNurInWin7Geht;
Ansonsten alles in TUpdateEngine reinmachen und nur die Zugriffe auf die Property/Funktionen intern unterdrücken (eventuell mit Exceptions), welche im aktuellen System nicht verfügbar sind.