Einzelnen Beitrag anzeigen

TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#9

AW: Problem mit Klassendesign

  Alt 1. Feb 2017, 12:37
das hört sich interessant an, aber wie macht man das in der Praxis?
Das sieht in der Deklaration ähnlich aus. Man hat nur keine Vererbung und kann auch ganz andere Objekte verwenden, solange diese nur das Interface IDatabase implementieren:
Delphi-Quellcode:
type
  IDatabase = interface
  ['{74C42FE6-FDBD-477E-A74E-CC5841CC8A30}']
    procedure ConnectDB(host,user,pw: String);
    procedure SelectDB(DBName:String); virtual;
    procedure SQLQuery(Query:String; var Cols:TCols; var Rows:TRows);
  end;

  TMySQL = class(TInterfacedObject, IDatabase)
  public
    procedure ConnectDB(host,user,pw: String);
    procedure SelectDB(DBName:String);
    procedure SQLQuery(Query:String; var Cols:TCols; var Rows:TRows);
  end;

  TMySQLPhpTunnel = class(TInterfacedObject, IDatabase)
  public
    procedure ConnectDB(host,user,pw: String);
    procedure SelectDB(DBName:String);
    procedure SQLQuery(Query:String; var Cols:TCols; var Rows:TRows);
  end;
  
implementation

procedure ZeigeInGui(SQL: IDatabase); //<----- wichtig ist hier!
var
  i,j: Integer;
begin
  SQL.SQLQuery('SELECT * FROM TestTabelle');
  for i:=0 to High(Rows[0])
    for j:=0 to High(Rows) do StringGrid1.Cells[i,j] rows[i,j]; //nur exemplarisch
end;
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat