--- oup/current/Tools/BinEdit.pas 2007/06/19 19:57:28 225 +++ oup/current/Tools/BinEdit.pas 2007/11/26 11:02:28 248 @@ -29,7 +29,6 @@ type value_viewer_context_copyashex: TMenuItem; procedure NewFile(fileinfo: TFileInfo); - procedure LoadDat(_fileid: Integer); function Save: Boolean; function GetValue(datatype: Word; offset: Integer): String; procedure SetNewValue(datatype: Word; offset: Integer; Value: String); @@ -120,28 +119,6 @@ end; procedure TForm_BinEdit.NewFile(fileinfo: TFileInfo); -begin - LoadDat(fileinfo.ID); -end; - - - - -function AddVSTEntry(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; - ARecord: TNodeData): PVirtualNode; -var - Data: PNodeData; -begin - Result := AVST.AddChild(ANode); - Data := AVST.GetNodeData(Result); - AVST.ValidateNode(Result, False); - Data^ := ARecord; -end; - - - - -procedure TForm_BinEdit.LoadDat(_fileid: Integer); var mem: TMemoryStream; begin @@ -156,24 +133,28 @@ begin end; end; end; - if _fileid >= 0 then + if fileinfo.ID >= 0 then begin - fileid := _fileid; + fileid := fileinfo.ID; ConID := ConnectionID; - if ConManager.Connection[ConID].ExtractFileIDOfName(filelist.Items.Strings[filelist.ItemIndex]) <> fileid then - Self.SelectFileID(ConnectionID, fileid); +// if ConManager.Connection[ConID].ExtractFileIDOfName(filelist.Items.Strings[filelist.ItemIndex]) <> fileid then +// Self.SelectFileID(ConnectionID, fileid); Self.ClearStructViewer; - mem := nil; - ConManager.Connection[ConID].LoadDatFile(fileid, TStream(mem)); - rawlist := ConManager.Connection[ConID].GetRawList(fileid); - hex.LoadFromStream(mem); - mem.Free; ClearValues; - WriteStructureInfos; + mem := nil; + hex.DataSize := 0; + if fileinfo.Size > 0 then + begin + ConManager.Connection[ConID].LoadDatFile(fileid, TStream(mem)); + rawlist := ConManager.Connection[ConID].GetRawList(fileid); + hex.LoadFromStream(mem); + mem.Free; + WriteStructureInfos; + end; end else begin - fileid := _fileid; + fileid := -1; ConID := -1; Self.ClearStructViewer; ClearValues; @@ -184,6 +165,22 @@ end; + +function AddVSTEntry(AVST: TCustomVirtualStringTree; ANode: PVirtualNode; + ARecord: TNodeData): PVirtualNode; +var + Data: PNodeData; +begin + Result := AVST.AddChild(ANode); + Data := AVST.GetNodeData(Result); + AVST.ValidateNode(Result, False); + Data^ := ARecord; +end; + + + + + function TForm_BinEdit.GetValue(datatype: Word; offset: Integer): String; var Data: TByteData;