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

Comparing oup/current/Tools/BinEdit.pas (file contents):
Revision 113 by alloc, Sun Feb 25 17:20:22 2007 UTC vs.
Revision 198 by alloc, Sat May 26 19:28:08 2007 UTC

# Line 21 | Line 21 | type
21      value_viewer_context_copyasstring: TMenuItem;
22      value_viewer_context_copyashex: TMenuItem;
23      VTHPopup: TVTHeaderPopupMenu;
24 +    panel_imexport: TPanel;
25 +    btn_export: TButton;
26 +    btn_import: TButton;
27      procedure FormCreate(Sender: TObject);
28      procedure NewFile(fileinfo: TFileInfo);
29  
# Line 58 | Line 61 | type
61    private
62      fileid: Integer;
63      ConID: Integer;
64 +    rawlist: TRawDataList;
65    public
66    end;
67  
# Line 66 | Line 70 | var
70  
71   implementation
72  
73 < uses ValueEdit, Main, Functions, DatStructureLoader{, RawEdit};
73 > uses ValueEdit, Main, Functions, DatStructureLoader, RawEdit;
74   {$R *.dfm}
75  
76   type
# Line 160 | Line 164 | begin
164      Self.ClearStructViewer;
165      mem := nil;
166      ConManager.Connection[ConID].LoadDatFile(fileid, TStream(mem));
167 +    rawlist := ConManager.Connection[ConID].GetRawList(fileid);
168      hex.LoadFromStream(mem);
169      mem.Free;
170      ClearValues;
# Line 172 | Line 177 | begin
177      Self.ClearStructViewer;
178      ClearValues;
179      hex.DataSize := 0;
180 +    SetLength(rawlist, 0);
181    end;
182   end;
183  
# Line 180 | Line 186 | end;
186   function TForm_BinEdit.GetValue(datatype: Word; offset: Integer): String;
187   var
188    Data: TByteData;
189 <  i:    Word;
189 >  i:    Integer;
190    tempi: Integer;
191    floatformat: TFormatSettings;
192   begin
# Line 218 | Line 224 | begin
224        Result := IntToBin(hex.Data[offset]);
225      11:
226      begin
227 <      tempi := ConManager.Connection[ConID].GetRawInfo(fileid, offset).RawAddr;
228 <      if tempi >= 0 then
229 <        Result := '0x' + IntToHex(tempi, 8)
230 <      else
231 <        Result := 'unused';
227 >      if Length(rawlist) > 0 then
228 >      begin
229 >        for i := 0 to High(rawlist) do
230 >          if rawlist[i].SrcOffset = offset then
231 >          begin
232 >            if rawlist[i].RawAddr > 0 then
233 >              Result := '0x' + IntToHex(rawlist[i].RawAddr, 8)
234 >            else
235 >              Result := 'unused';
236 >            Break;
237 >          end;
238 >        if i > High(rawlist) then
239 >          Result := 'unused';
240 >      end;
241      end;
242      12:
243        if hex.Data[offset] = 1 then
# Line 467 | Line 482 | begin
482        str := '';
483        if hex.SelCount = 0 then
484        begin
485 <        while (hex.Data[hex.SelStart + j] > 0) and ((hex.SelStart + j) < hex.DataSize) do
485 >        while (hex.SelStart + j) < hex.DataSize do
486          begin
487 +          if hex.Data[hex.SelStart + j] = 0 then
488 +            Break;
489            if hex.Data[hex.selstart + j] >= 32 then
490              str := str + Char(hex.Data[hex.SelStart + j])
491            else
# Line 742 | Line 759 | procedure TForm_BinEdit.VSTDblClick(Send
759   var
760    node: PVirtualNode;
761    nodedata: PNodeData;
762 +  rawinfo: TRawDataInfo;
763    form: TForm_ToolTemplate;
764   begin
765    if VST.FocusedColumn = 3 then
# Line 759 | Line 777 | begin
777      begin
778        if (nodedata.DataType = 11) and (nodedata.Value <> 'unused') then
779        begin
780 <        if ConManager.Connection[ConID].GetRawInfo(fileid, nodedata.offset).RawSize > 0 then
781 <          Form_Main.open_child('rawedit', ConID, fileid);
780 >        rawinfo := ConManager.Connection[ConID].GetRawInfo(fileid, nodedata.offset);
781 >        if rawinfo.RawSize > 0 then
782 >        begin
783 >          form := nil;
784 >          form := Form_Main.open_child('rawedit', ConID, fileid);
785 >          if Assigned(form) then
786 >            TForm_RawEdit(form).LoadRaw(rawinfo);
787 >        end;
788        end;
789        if (nodedata.DataType = 12) and (nodedata.Value <> 'no link') then
790        begin

Diff Legend

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