Ich habe mit der
XML-Datenanbindung eine Klasse zur Verwaltung von Programmeinstellungen erstellt.
In der eigentlichen Anwendung habe ich nun 3 ExecApps-Funktionen, die bis auf den Funktionskopf identisch sind.
Delphi-Quellcode:
interface
...
type
TfrmMain = class(TForm)
procedure btnPreBackupClick(Sender: TObject);
procedure btnBackupClick(Sender: TObject);
procedure btnPostBackupClick(Sender: TObject);
private
function ExecApps(AppType : IXMLPreBackupType;
SelectedOption : TExitMode) : Integer; overload;
function ExecApps(AppType : IXMLBackupType;
SelectedOption : TExitMode) : Integer; overload;
function ExecApps(AppType : IXMLPostBackupType;
SelectedOption : TExitMode) : Integer; overload;
public
...
end;
implementation
function TfrmMain.ExecApps(AppType : IXMLBackupType;
SelectedOption : TExitMode) : Integer;
begin
if (AppType.Count = 0) then
begin
Exit;
end;
...
end;
function TfrmMain.ExecApps(AppType : IXMLPreBackupType;
SelectedOption : TExitMode) : Integer;
begin
if (AppType.Count = 0) then
begin
Exit;
end;
...
end;
function TfrmMain.ExecApps(AppType : IXMLPostBackupType;
SelectedOption : TExitMode) : Integer;
begin
if (AppType.Count = 0) then
begin
Exit;
end;
...
end;
...
procedure TfrmMain.btnPreBackupClick(Sender: TObject);
begin
if ExecApps(FXMLConfig.Types.Prebackup, SelectedOption) then
begin
...
end;
end;
procedure TfrmMain.btnBackupClick(Sender: TObject);
begin
if ExecApps(FXMLConfig.Types.Backup, SelectedOption) then
begin
...
end;
end;
procedure TfrmMain.btnPostBackupClick(Sender: TObject);
begin
if ExecApps(FXMLConfig.Types.Postbackup, SelectedOption) then
begin
...
end;
end;
IXMLBackupType, IXMLPreBackupType, IXMLPostBackupType sind von IXMLNodeCollection abgeleitet.
Der obige Code funktioniert soweit, ist aber natürlich 3-fach vorhanden und muss entsprechend gepflegt werden.
Jetzt dachte ich, ich könnte die 3 ExecApps-Funktionen zusammenfassen um die Pflege zu vereinfachen:
Delphi-Quellcode:
interface
...
type
TfrmMain = class(TForm)
procedure btnPreBackupClick(Sender: TObject);
procedure btnBackupClick(Sender: TObject);
procedure btnPostBackupClick(Sender: TObject);
private
function ExecApps<T>(AppType : T;
SelectedOption : TExitMode) : Integer;
public
...
end;
implementation
function TfrmMain.ExecApps<T>(AppType : T;
SelectedOption : TExitMode) : Integer;
begin
if (AppType.Count = 0) then // E2003 Undeklarierter Bezeichner: 'Count'
begin
Exit;
end;
end;
...
procedure TfrmMain.btnPreBackupClick(Sender: TObject);
begin
if ExecApps<IXMLPreBackupType>(FXMLConfig.Types.Prebackup, SelectedOption) then
begin
...
end;
end;
procedure TfrmMain.btnBackupClick(Sender: TObject);
begin
if ExecApps<IXMLBackupType>(FXMLConfig.Types.Backup, SelectedOption) then
begin
...
end;
end;
procedure TfrmMain.btnPostBackupClick(Sender: TObject);
begin
if ExecApps<IXMLPostbackupType>(FXMLConfig.Types.Postbackup, SelectedOption) then
begin
...
end;
end;
Leider erhalte ich beim Zugriff auf
AppType.Count in
TfrmMain.ExecApps<T> den Fehler
E2003 Undeklarierter Bezeichner: 'Count'.
Weiß jemand was ich falsch mache?