Einzelnen Beitrag anzeigen

jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit Klassendesign

  Alt 31. Jan 2017, 14:43
Hallo,
bis jetzt habe ich objektorientierte Programmierung eher vermieden. Doch für ein aktuelles Projekt hätte ich gerne es eingesetzt, leider scheitert es bei mir an den Grundlagen und ist vermutlich ziemlich trivial. Da mir die Begriffe für mein Problem fehlen, versuche ich meine Frage zu beschreiben:

Delphi-Quellcode:
type
  TDatabase = class(TObject)
  public
    procedure ConnectDB(host,user,pw: String);
    procedure SelectDB(DBName:String);
    procedure SQLQuery(Query:String; var Cols:TCols; var Rows:TRows);
  end;

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

  TMySQLPhpTunnel = class(TDatabase)
  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: TDatabase); //<----- 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;
Ich habe aktuell eine Anwendung, das einerseits Daten von einer lokalen MySQL-Datenbank ausliest und andererseits über PHP Tunnel Daten aus einer MySql-Datenbank ausliest. Für die Datenbankkommunikation habe ich 2 verschiedene Objektklassen erstellt. Doch wie kann man eine Procedure/Funktion (in diesem Fall "procedure ZeigeInGui") bauen, das als Parameter beide Objektklassen (TMySQL u. TMySQLPhpTunnel) akzeptiert. Später sollte auch ein Objekt für MSSQL dazukommen. Wie kann man sowas machen?

lg,
jus
  Mit Zitat antworten Zitat