--- oup/current/FileClasses/_MetaManager.pas 2007/06/12 16:42:53 212 +++ oup/current/FileClasses/_MetaManager.pas 2007/06/20 09:51:38 228 @@ -1,25 +1,13 @@ unit _MetaManager; interface -uses _FileTypes, TXAN, TXMP, _EmptyFile; - -type - TFileType = class of TFile; - TFileDesc = record - ext: String; - ftype: TFileType; - end; - -const - FileDescs: array[0..1] of TFileDesc = ( - (ext: 'TXAN'; ftype: TFile_TXAN), - (ext: 'TXMP'; ftype: TFile_TXMP) - ); +uses _MetaTypes; type TMetaManager = class protected FFiles: array of TFile; + FRoot: array of TExtension; FConnectionID: Integer; function GetFileCount: Integer; function GetFileById(Id: Integer): TFile; @@ -28,15 +16,20 @@ type public constructor Create(ConnectionID: Integer); procedure InitFile(id: Integer); + procedure InitFileFields(id: Integer); property FileCount: Integer read GetFileCount; property FileById[Id: Integer]: TFile read GetFileById; end; +var + Meta: TMetaManager; + implementation uses - Classes, ConnectionManager, Access_OniArchive, TypeDefs, Dialogs, SysUtils, StrUtils; + Classes, ConnectionManager, Access_OniArchive, TypeDefs, + Dialogs, SysUtils, StrUtils; { TFileManager } @@ -58,7 +51,6 @@ end; procedure TMetaManager.InitFile(id: Integer); var -// i: Integer; typei: Integer; finfo: TFileInfo; begin @@ -73,7 +65,7 @@ begin begin if FileDescs[typei].ext = finfo.Extension then begin - FFiles[id] := TFileType(FileDescs[typei].ftype).Create(FConnectionID, id); + FFiles[id] := TFileClass(FileDescs[typei].ftype).Create(FConnectionID, id); Break; end; end; @@ -86,6 +78,19 @@ begin end; end; +procedure TMetaManager.InitFileFields(id: Integer); +begin + if id < ConManager.Connection[FConnectionID].GetFileCount then + begin + if not Assigned(FFiles[id]) then + begin + InitFile(id); + if not (FFiles[id] is TFile_Empty) then + FFiles[id].InitDataFields; + end; + end; +end; + procedure TMetaManager.InitRootFiles; var files: TStrings; @@ -115,7 +120,7 @@ begin begin if FileDescs[typei].ext = finfo.Extension then begin - FFiles[fid] := TFileType(FileDescs[typei].ftype).Create(FConnectionID, fid); + FFiles[fid] := TFileClass(FileDescs[typei].ftype).Create(FConnectionID, fid); Break; end; end;