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

Comparing oup/current/DataAccess/Access_OUP_ADB.pas (file contents):
Revision 229 by alloc, Wed Jun 20 10:57:51 2007 UTC vs.
Revision 241 by alloc, Tue Jul 17 22:27:16 2007 UTC

# Line 34 | Line 34 | type
34      function GetDatLink(FileID, DatOffset: Integer): TDatLink; override;
35      function GetRawList(FileID: Integer): TRawDataList; override;
36      function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override;
37 +    function GetRawsForType(RawType: String): TRawDataList; override;
38  
39      procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; override;
40      procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TStream); overload; override;
# Line 267 | Line 268 | begin
268      list.Sorted := False
269    else
270      list.Sorted := True;
271 +  if ext = '*' then
272 +    ext := '';
273    for i := 0 to GetFileCount - 1 do
274    begin
275      if ((Length(ext) = 0) or (Pos(Fdat_files[i].Extension, ext) > 0)) and
# Line 489 | Line 492 | var
492    i: Integer;
493   begin
494    SetLength(Result, 0);
495 <  FQuery.SQL.Text := 'SELECT [src_link_offset],[size],[sep] FROM rawmap WHERE [src_id]=' +
495 >  FQuery.SQL.Text := 'SELECT [src_link_offset],[name],[size],[sep],[type] FROM rawmap WHERE [src_id]=' +
496      IntToStr(fileid) + ' ORDER BY src_link_offset ASC;';
497    FQuery.Open;
498    if FQuery.RecordCount > 0 then
# Line 498 | Line 501 | begin
501      SetLength(Result, FQuery.RecordCount);
502      i := 0;
503      repeat
504 +      Result[i].Name      := FQuery.FieldByName('name').AsString;
505        Result[i].SrcID     := fileid;
506        Result[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
507        Result[i].RawAddr   := 0;
508        Result[i].RawSize   := FQuery.FieldByName('size').AsInteger;
509        Result[i].LocSep    := FQuery.FieldByName('sep').AsBoolean;
510 +      Result[i].RawType   := FQuery.FieldByName('type').AsString;
511        Inc(i);
512        FQuery.Next;
513      until FQuery.EOF;
# Line 525 | Line 530 | begin
530      if i < Length(rawlist) then
531        Result := rawlist[i]
532      else begin
533 +      Result.Name      := '';
534        Result.SrcID     := -1;
535        Result.SrcOffset := -1;
536        Result.RawAddr   := -1;
537        Result.RawSize   := -1;
538 +      Result.RawType   := '';
539      end;
540    end;
541   end;
542  
543  
544 + function TAccess_OUP_ADB.GetRawsForType(RawType: String): TRawDataList;
545 + var
546 +  i: Integer;
547 +  rawlist: TRawDataList;
548 + begin
549 +  SetLength(Result, 0);
550 +  FQuery.SQL.Text := 'SELECT [src_id],[src_link_offset],[name],[size],[sep] FROM rawmap ' +
551 +    'WHERE [type]="' + RawType + '" ORDER BY src_id ASC, src_link_offset ASC;';
552 +  FQuery.Open;
553 +  if FQuery.RecordCount > 0 then
554 +  begin
555 +    FQuery.First;
556 +    SetLength(Result, FQuery.RecordCount);
557 +    i := 0;
558 +    repeat
559 +      Result[i].Name      := FQuery.FieldByName('name').AsString;
560 +      Result[i].SrcID     := FQuery.FieldByName('src_id').AsInteger;
561 +      Result[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
562 +      Result[i].RawAddr   := 0;
563 +      Result[i].RawSize   := FQuery.FieldByName('size').AsInteger;
564 +      Result[i].LocSep    := FQuery.FieldByName('sep').AsBoolean;
565 +      Result[i].RawType   := RawType;
566 +      Inc(i);
567 +      FQuery.Next;
568 +    until FQuery.EOF;
569 +  end;
570 +  FQuery.Close;
571 + end;
572 +
573 +
574 +
575  
576   procedure TAccess_OUP_ADB.LoadRawFile(FileID, DatOffset: Integer; var Target: TStream);
577   var

Diff Legend

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