Changeset 240 for oup/current/FileClasses/_FileTypes.pas
- Timestamp:
- Jul 15, 2007, 1:12:26 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
oup/current/FileClasses/_FileTypes.pas
r238 r240 4 4 5 5 uses 6 TypeDefs, _ DataTypes, _TreeElement, Classes, Forms;6 TypeDefs, _TreeElement, Classes, Forms, _DataTypes; 7 7 8 8 … … 15 15 FFileInfo: TFileInfo; 16 16 FFileStream: TMemoryStream; 17 FRawCaches: array of TMemoryStream; 17 18 18 19 FCached: Boolean; … … 24 25 FOpened: Boolean; 25 26 27 function GetEditor: TFrame; 26 28 function GetFieldByOffset(Offset: Integer): TDataField; 27 published 29 procedure SetOpened(Opened: Boolean); virtual; 30 published 28 31 public 29 32 constructor Create(ConnectionID, FileID: Integer); virtual; … … 33 36 procedure InitEditor; virtual; 34 37 38 procedure ReCreateFile(fs: TStream); 39 40 procedure CacheFile; 41 procedure CacheRawFile(Offset: Integer); 42 35 43 property FileStream: TMemoryStream read FFileStream; 36 44 property FileInfo: TFileInfo read FFileInfo; 37 property ConnectionID: Integer read FConnectionID;38 45 39 46 property Cached: Boolean read FCached; 40 47 property Changed: Boolean read FChanged write FChanged; 41 48 42 property Editor: TFrame read FEditor;43 property Opened: Boolean read FOpened write FOpened;49 property Editor: TFrame read GetEditor; 50 property Opened: Boolean read FOpened write SetOpened; 44 51 45 52 property FieldByOffset[Offset: Integer]: TDataField read GetFieldByOffset; … … 58 65 { TFileType } 59 66 67 procedure TFile.CacheFile; 68 begin 69 if not Assigned(FFileStream) then 70 begin 71 FFileStream := TMemoryStream.Create; 72 ConManager.Connection[FConnectionID].LoadDatFile(FFileInfo.ID, TStream(FFileStream)); 73 end; 74 end; 75 76 77 procedure TFile.CacheRawFile(Offset: Integer); 78 var 79 rawlist: TRawDataList; 80 i: Integer; 81 begin 82 rawlist := ConManager.Connection[ConnectionID].GetRawList(FFileInfo.ID); 83 if Length(rawlist) > 0 then 84 begin 85 for i := 0 to High(rawlist) do 86 begin 87 if rawlist[i].SrcOffset = Offset then 88 begin 89 if not Assigned(FRawCaches[i]) then 90 begin 91 FRawCaches[i] := TMemoryStream.Create; 92 ConManager.Connection[ConnectionID].LoadRawFile(FFileInfo.ID, Offset, TStream(FRawCaches[i])); 93 end; 94 end; 95 end; 96 end; 97 end; 98 99 100 procedure TFile.SetOpened(Opened: Boolean); 101 begin 102 FOpened := Opened; 103 end; 104 105 60 106 constructor TFile.Create(ConnectionID, FileID: Integer); 61 107 begin 62 108 FConnectionID := ConnectionID; 63 109 FFileInfo := ConManager.Connection[ConnectionID].GetFileInfo(FileID); 110 111 SetLength(FRawCaches, Length(ConManager.Connection[ConnectionID].GetRawList(FileID))); 64 112 65 113 FCached := False; … … 107 155 108 156 157 function TFile.GetEditor: TFrame; 158 begin 159 if not Assigned(FEditor) then 160 InitEditor; 161 Result := FEditor; 162 end; 163 164 109 165 procedure TFile.InitDataFields; 110 166 begin … … 122 178 123 179 180 //********************************************************* 181 //********************************************************* 182 //********************************************************* 183 procedure TFile.ReCreateFile(fs: TStream); 184 const 185 temp0: array[0..31] of Byte = 186 ($AD,$DE,$AD,$DE,$AD,$DE,$AD,$DE, 187 $AD,$DE,$AD,$DE,$AD,$DE,$AD,$DE, 188 $AD,$DE,$AD,$DE,$AD,$DE,$AD,$DE, 189 $AD,$DE,$AD,$DE,$AD,$DE,$AD,$DE); 190 var 191 count: Integer; 192 begin 193 FDataFields.WriteData(fs); 194 count := fs.Size mod 32; 195 if count > 0 then 196 fs.Write(temp0[count], 32 - count); 197 end; 198 //********************************************************* 199 //********************************************************* 200 //********************************************************* 201 124 202 end.
Note:
See TracChangeset
for help on using the changeset viewer.