AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anfängerfragen zu Generics

Ein Thema von ringli · begonnen am 6. Apr 2025 · letzter Beitrag vom 6. Apr 2025
 
ringli

Registriert seit: 7. Okt 2004
517 Beiträge
 
Delphi 11 Alexandria
 
#1

Anfängerfragen zu Generics

  Alt 6. Apr 2025, 11:14
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?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz