Hey super.
Das werde ich dann mal in aller ausführlichkeit testen
Ich melde mich wenns noch Fragen gibt
PS:
Also von der Möglichkeit mit der TStringList werde ich wohl absehen...soll eh konstant werden...mal gucken ob das geht
Edit: SUPI
also so scheint es zu gehen (Für alle, die dieses Problem auch haben (werden)):
Delphi-Quellcode:
TImport_Virtual = class(TObject)
private //Basisklasse für ImportTyp
FFileName: String;
FFileExt: String;
FData: TDataArray;
public
function OpenFile(var Err: String):Boolean; virtual; abstract;
function CloseFile(var Err: String):Boolean; virtual; abstract;
function Analyse(var Err: String):Boolean; virtual; abstract;
function GetData(var Dat: TDataArray):Boolean;
property FileName: String read FFileName write FFileName;
end;
TImportClassType = class of TImport_Virtual;
TXLSImport = class(TImport_Virtual)
private //Import aus XLS-Datei
Adv: TAdvStringGrid;
public
constructor Create;
destructor Destroy;
function OpenFile(var Err: String):Boolean; override;
function CloseFile(var Err: String):Boolean; override;
function Analyse(var Err: String):Boolean; override;
end;
TImportType = record
Import: TImportClassType;
FileExt: String;
Description: String;
end;
TImportArray = array[1..2] of TImportType;
const //Import-Typen
cImports: TImportArray = (
(Import: TXLSImport; FileExt: 'xls'; Description: 'Excel-Datei'),
(Import: TXLSImport; FileExt: 'xls'; Description: 'Excel-Datei')
);
und dann der Aufruf:
Delphi-Quellcode:
procedure TForm_Main.Btn_ExecuteClick(Sender: TObject);
//Hochladen
var Import: TImport_Virtual;
B: Boolean;
S: String;
begin
try
Import:=Imports[1].Import.Create;
Import.FileName:=Edt_FileName_Man.FileName;
B:=Import.OpenFile(S);
Log('Datei laden',B,S);
B:=Import.Analyse(S);
Log('Analyse',B,S);
B:=Import.CloseFile(S);
Log('Datei schließen',B,S);
Log('Daten kopieren',Import.GetData(FData));
Log('Upload',Upload);
Import.Free;
except
end;
end;
und das raussuchen welchen index ich nun nehmen muss, das ist ja nun einfach