Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Typ in Variable speichern

  Alt 18. Nov 2005, 20:12
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
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat