Du kannst die Funktionen in
Les
und
LesSQL
in Klassen auslagern. Zum Beispiel kannst du hier auch auf Vererbung zurückgreifen.
Delphi-Quellcode:
unit LesBase;
interface
type
TLesBase =
class
public
function LeseDatei(
Name:
String):
String;
virtual;
abstract;
end;
TLesBaseClass =
class of TLesBase;
implementation
end.
Delphi-Quellcode:
unit Les;
interface
uses
LesBase;
type
TLes =
class(TLesBase)
public
function LeseDatei(
Name:
String):
String;
override;
end;
implementation
function TLes.LeseDatei(
Name:
String):
String;
begin
...
end;
end.
Delphi-Quellcode:
unit LesSQL;
interface
uses
LesBase;
type
TLesSQL =
class(TLesBase)
public
function LeseDatei(
Name:
String):
String;
override;
end;
implementation
function TLesSQL.LeseDatei(
Name:
String):
String;
begin
...
end;
end.
Und in dem Wrapper kannst du dann im Constructor die entsprechende Les-Klasse übergeben.
Delphi-Quellcode:
unit Lese;
interface
uses
LesBase;
type
TLese =
class
constructor Create(ALesClass: TLesBaseClass);
destructor Destroy;
override;
private
FLesClass: TLesBaseClass;
public
function getDatei: Boolean;
end;
implementation
constructor TLese.Create(ALesClass: TLesBaseClass);
begin
FLesClass := ALesClass.Create;
end;
destructor TLese.Destroy;
begin
FLesClass.Free;
inherited;
end;
function TLese.getDatei: Boolean;
begin
Result := Length(FLesClass.LeseDatei('
...') > 0);
end;
end.
Anwendung:
Delphi-Quellcode:
unit Form1;
interface
...
implementation
uses
Lese, Les, LesSQL;
...
procedure TForm1.Button1Click(Sender: TObject);
var
LesClass: TLesBaseClass;
begin
case FUseClass
of
clLes:
LesClass := TLes;
clLesSQL:
LesClass := TLesSQL;
end;
FLese := TLese.Create(LesClass);
try
if FLese.getDatei
then
ShowMessage('
Juhu! \o/')
else
ShowMessage('
Oh Noes! D:');
finally
FLese.Free;
end;
end;
...
end.
Ungetestet. Aber das Prinzip sollte klar sein.