ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/DataAccess/DataAccess.pas
(Generate patch)

Comparing oup/rewrite/DataAccess/DataAccess.pas (file contents):
Revision 97 by alloc, Mon Jan 22 23:05:45 2007 UTC vs.
Revision 101 by alloc, Tue Feb 20 20:43:29 2007 UTC

# Line 2 | Line 2 | unit DataAccess;
2   interface
3  
4   uses TypeDefs, Classes, StrUtils, SysUtils;
5 //uses Data, Classes, SysUtils, StrUtils,
6 //  Dialogs, ABSDecUtil, ABSMain, DB, Windows;
7
5  
6   type
7    TDataAccess = class
8    private
9 +  protected
10      FConnectionID:  Integer;
11      FFileName:      String;
12      FBackend:       TDataBackend;
# Line 16 | Line 14 | type
14      FLevelNumber:   Integer;
15      FChangeRights:  TChangeRights;
16      procedure SetDataOS(DataOS: TDataOS);
19  protected
17    public
18      property ConnectionID: Integer      read FConnectionID;
19      property FileName:     String       read FFileName;
20      property Backend:      TDataBackend read FBackend;
21      property DataOS:       TDataOS      read FDataOS write SetDataOS;
22      property LevelNumber:  Integer      read FLevelNumber;
23 +    property ChangeRights: TChangeRights read FChangeRights;
24  
25      constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; abstract;
26      procedure Close; virtual; abstract;
# Line 36 | Line 34 | type
34      function GetExtensionsList(ExtListFormat: TExtensionFormat): TStrings; virtual; abstract;
35  
36      procedure LoadDatFile(FileID: Integer; var Target: TStream); overload; virtual; abstract;
37 <    procedure LoadDatFile(FileID: Integer; var Target: TByteData); overload; virtual; abstract;
37 >    procedure LoadDatFile(FileID: Integer; var Target: TByteData); overload;
38      procedure UpdateDatFile(FileID: Integer; Src: TStream); overload; virtual; abstract;
39 <    procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload; virtual; abstract;
39 >    procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload;
40      procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
41 <    procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
42 <    procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
41 >    procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload;
42 >    procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload;
43      procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
44 <    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
45 <    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
44 >    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload;
45 >    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload;
46  
47      function GetRawList(FileID: Integer): TRawDataList; virtual; abstract;
48 <    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
48 >    function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; virtual; abstract;
49  
50      procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract;
51 <    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload; virtual; abstract;
52 <    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TStream); overload; virtual; abstract;
53 <    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TByteData); overload; virtual; abstract;
51 >    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload;
52 >    procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TStream); overload; virtual; abstract;
53 >    procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TByteData); overload;
54      procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
55 <    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
56 <    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
55 >    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload;
56 >    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload;
57      procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
58 <    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
59 <    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
58 >    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload;
59 >    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload;
60  
61 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual; abstract;
62 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload; virtual; abstract;
63 <    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload; virtual; abstract;
61 >    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual;
62 >    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload;
63 >    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload;
64    published
65    end;
66  
# Line 119 | Line 117 | begin
117   end;
118  
119  
120 < function TDataAccess.GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo;
120 > procedure TDataAccess.LoadDatFile(FileID: Integer; var Target: TByteData);
121   var
122 <  i: LongWord;
125 <  RawList: TRawDataList;
122 >  data: TStream;
123   begin
124 <  RawList          := GetRawList(FileID);
128 <  Result.SrcID     := -1;
129 <  Result.SrcOffset := -1;
130 <  Result.RawAddr   := -1;
131 <  Result.RawSize   := -1;
132 <  if Length(RawList) > 0 then
124 >  if fileid < GetFileCount then
125    begin
126 <    for i := 0 to High(RawList) do
127 <    begin
128 <      if RawList[i].SrcOffset = DatOffset then
129 <      begin
130 <        Result.SrcID     := FileID;
131 <        Result.SrcOffset := RawList[i].SrcOffset;
132 <        Result.RawAddr   := RawList[i].RawAddr;
133 <        Result.RawSize   := RawList[i].RawSize;
134 <        Result.LocSep    := RawList[i].LocSep;
135 <        Break;
136 <      end;
137 <    end;
126 >    data := nil;
127 >    LoadDatFile(FileID, data);
128 >    SetLength(Target, data.Size);
129 >    data.Read(Target[0], data.Size);
130 >    data.Free;
131 >  end;
132 > end;
133 >
134 > procedure TDataAccess.UpdateDatFile(FileID: Integer; Src: TByteData);
135 > var
136 >  data: TStream;
137 > begin
138 >  if fileid < GetFileCount then
139 >  begin
140 >    data := TMemoryStream.Create;
141 >    data.Write(Src[0], Length(Src));
142 >    data.Seek(0, soFromBeginning);
143 >    UpdateDatFile(FileID, data);
144 >    data.Free;
145 >  end;
146 > end;
147 >
148 > procedure TDataAccess.LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData);
149 > var
150 >  data: TStream;
151 > begin
152 >  if fileid < GetFileCount then
153 >  begin
154 >    data := nil;
155 >    LoadDatFilePart(FileID, offset, size, data);
156 >    SetLength(Target, data.Size);
157 >    data.Read(Target[0], data.Size);
158 >    data.Free;
159 >  end;
160 > end;
161 >
162 > procedure TDataAccess.LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer);
163 > var
164 >  data: TStream;
165 > begin
166 >  if fileid < GetFileCount then
167 >  begin
168 >    data := nil;
169 >    LoadDatFilePart(FileID, offset, size, data);
170 >    data.Read(Target^, data.Size);
171 >    data.Free;
172 >  end;
173 > end;
174 >
175 > procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData);
176 > var
177 >  data: TStream;
178 > begin
179 >  if fileid < GetFileCount then
180 >  begin
181 >    data := TMemoryStream.Create;
182 >    data.Write(Src[0], Size);
183 >    data.Seek(0, soFromBeginning);
184 >    UpdateDatFilePart(FileID, offset, size, data);
185 >    data.Free;
186 >  end;
187 > end;
188 >
189 > procedure TDataAccess.UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer);
190 > var
191 >  data: TStream;
192 > begin
193 >  if fileid < GetFileCount then
194 >  begin
195 >    data := TMemoryStream.Create;
196 >    data.Write(Src^, Size);
197 >    data.Seek(0, soFromBeginning);
198 >    UpdateDatFilePart(FileID, offset, size, data);
199 >    data.Free;
200 >  end;
201 > end;
202 >
203 >
204 >
205 > procedure TDataAccess.LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData);
206 > var
207 >  data: TStream;
208 > begin
209 >  if fileid < GetFileCount then
210 >  begin
211 >    data := nil;
212 >    LoadRawFile(FileID, DatOffset, data);
213 >    SetLength(Target, data.Size);
214 >    data.Read(Target[0], data.Size);
215 >    data.Free;
216 >  end;
217 > end;
218 >
219 > procedure TDataAccess.UpdateRawFile(FileID, DatOffset: Integer; Src: TByteData);
220 > var
221 >  data: TStream;
222 > begin
223 >  if fileid < GetFileCount then
224 >  begin
225 >    data := TMemoryStream.Create;
226 >    data.Write(Src[0], Length(Src));
227 >    data.Seek(0, soFromBeginning);
228 >    UpdateRawFile(FileID, DatOffset, data);
229 >    data.Free;
230    end;
231   end;
232  
233 + procedure TDataAccess.LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData);
234 + var
235 +  data: TStream;
236 + begin
237 +  if fileid < GetFileCount then
238 +  begin
239 +    data := nil;
240 +    SetLength(Target, Size);
241 +    LoadRawFile(FileID, DatOffset, Data);
242 +    Data.Seek(Offset, soFromBeginning);
243 +    Data.Read(Target[0], Size);
244 +    Data.Free;
245 +  end;
246 + end;
247 +
248 + procedure TDataAccess.LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer);
249 + var
250 +  data: TStream;
251 + begin
252 +  if fileid < GetFileCount then
253 +  begin
254 +    data := nil;
255 +    LoadRawFile(FileID, DatOffset, Data);
256 +    Data.Seek(Offset, soFromBeginning);
257 +    Data.Read(Target^, Size);
258 +    Data.Free;
259 +  end;
260 + end;
261 +
262 + procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData);
263 + var
264 +  data: TStream;
265 + begin
266 +  if fileid < GetFileCount then
267 +  begin
268 +    data := TMemoryStream.Create;
269 +    data.Write(Src[0], Size);
270 +    data.Seek(0, soFromBeginning);
271 +    UpdateRawFilePart(FileID, DatOffset, Offset, Size, data);
272 +    data.Free;
273 +  end;
274 + end;
275 +
276 + procedure TDataAccess.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer);
277 + var
278 +  data: TStream;
279 + begin
280 +  if fileid < GetFileCount then
281 +  begin
282 +    data := TMemoryStream.Create;
283 +    data.Write(Src^, Size);
284 +    data.Seek(0, soFromBeginning);
285 +    UpdateRawFilePart(FileID, DatOffset, Offset, Size, data);
286 +    data.Free;
287 +  end;
288 + end;
289 +
290 +
291 + function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer;
292 + begin
293 +  raise ENotImplemented.Create('ERROR: AppendRawFile not implemented here!!!');
294 + end;
295 +
296 +
297 + function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer;
298 + var
299 +  data: TStream;
300 + begin
301 +  data := TMemoryStream.Create;
302 +  data.Write(Src[0], Size);
303 +  AppendRawFile(LocSep, Size, data);
304 +  data.Free;
305 + end;
306 +
307 + function TDataAccess.AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer;
308 + var
309 +  data: TStream;
310 + begin
311 +  data := TMemoryStream.Create;
312 +  data.Write(Src^, Size);
313 +  AppendRawFile(LocSep, Size, data);
314 +  data.Free;
315 + end;
316 +
317 +
318  
319   procedure TDataAccess.SetDataOS(DataOS: TDataOS);
320   begin

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)