Ich könnte mir das etwa so vorstellen:
Delphi-Quellcode:
type
IExport = interface
procedure Export({...});
function GetParams: TStringList;
procedure SetParams(AValue: TStringList);
property Params: TStringList read GetParams write SetParams;
end;
Implementation:
Delphi-Quellcode:
procedure CreateExport: IExport;
export;
implementation
type
TExportCSV =
class(TInterfacedObject, IExport)
protected
FParams: TStringList;
procedure InitParams;
virtual;
procedure CheckParams;
virtual;
public {IExport}
procedure Export(
{...});
function GetParams: TStringList;
procedure SetParams(AValue: TStringList);
public
constructor Create;
destructor Destroy;
override;
end;
constructor TExportCSV.Create;
begin
inherited;
FParams := TStringList.Create;
InitParams;
end;
destructor TExportCSV.Destroy;
begin
FParams.Free;
inherited;
end;
procedure TExportCSV.InitParams;
begin
{alle möglichen Parameter mit default eintragen}
with FParams
do
begin
Add('
ExportDir' + NameValueSeparator);
Add('
Separator' + NameValueSeparator + '
;');
{...}
end;
end;
procedure TExportCSV.CheckParams;
begin
if FParams.Values['
ExportDir'] = '
'
then
raise Exception.Create('
Parameter ''
ExportDir''
ist erforderlich.');
if FParams.Values['
Separator'] = '
'
then
raise Exception.Create('
Parameter ''
Separator''
ist erforderlich.');
if Length(FParams.Values['
Separator']) > 1
then
raise Exception.Create('
Parameter ''
Separator''
darf nur ein Zeichen enthalten.');
{...}
end;
procedure TExportCSV.SetParams(AValue: TStringList);
begin
FParams.Assign(AValue);
end;
function TExportCSV.GetParams: TStringList;
begin
Result := FParams;
end;
procedure TExportCSV.
Export(
{...});
begin
CheckParams;
{...}
end;
procedure CreateExport: IExport;
begin
Result := TExportCSV.Create;
end;
Ohne das die Anwendung die Parameter der konkreten Schnittstelle kennen muss, können die Parameter so vom Anwender bearbeitet, gespeichert und gelesen werden. TStringList ist natürlich nur die einfachste Variante. Denkbar wäre eine Liste von Parameterobjekten die jeweils noch weitere Information über die Art des Paramaters besitzen und diesen validieren können.