| 1 |  | unit BinEdit; | 
 
 
 
 
 
 
 
 | 2 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 3 |  | interface | 
 
 
 
 
 
 
 
 | 4 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 5 |  | uses | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 6 |  | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | 
 
 
 
 
 
 
 
 
 
 
 | 7 | < | Dialogs, VirtualTrees, Grids, Wrapgrid, MPHexEditor, StdCtrls, | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 8 | < | Menus, VTHeaderPopup, ExtCtrls, Buttons, StrUtils, Clipbrd, | 
 
 
 
 
 
 
 
 
 | 7 | > | Dialogs, VirtualTrees, Grids, Wrapgrid, MPHexEditor, | 
 
 
 
 
 | 8 | > | StdCtrls, Menus, ExtCtrls, Buttons, | 
 
 
 
 
 
 
 
 
 
 
 | 9 |  | Data, TypeDefs, ConnectionManager, Template, | 
 
 
 
 
 
 
 
 
 
 
 | 10 | < | _BaseTemplate, _TemplateFile, _TemplateFileList; | 
 
 
 
 
 
 
 
 
 | 10 | > | _TemplateFileList, VTHeaderPopup; | 
 
 
 
 
 
 
 
 
 
 
 | 11 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 12 |  | type | 
 
 
 
 
 
 
 
 
 
 
 | 13 | < | TForm_BinEdit = class(TForm_ToolTemplate) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 13 | > | TForm_BinEdit = class(TForm_TemplateFileList) | 
 
 
 
 
 | 14 | > | panel_imexport: TPanel; | 
 
 
 
 
 | 15 | > | btn_export: TButton; | 
 
 
 
 
 | 16 | > | btn_import: TButton; | 
 
 
 
 
 
 
 
 
 
 
 | 17 |  | hex: TMPHexEditor; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 18 |  | Splitter2: TSplitter; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 19 |  | value_viewer: TWrapGrid; | 
 
 
 
 
 
 
 
 
 | 15 | – | VST: TVirtualStringTree; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 20 |  | Splitter3: TSplitter; | 
 
 
 
 
 
 
 
 | 21 | + | VST: TVirtualStringTree; | 
 
 
 
 
 
 
 
 | 22 | + | VTHPopup: TVTHeaderPopupMenu; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 23 |  | value_viewer_context: TPopupMenu; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 24 |  | value_viewer_context_copy: TMenuItem; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 25 |  | value_viewer_context_copyasdec: TMenuItem; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 27 |  | value_viewer_context_copyasbitset: TMenuItem; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 28 |  | value_viewer_context_copyasstring: TMenuItem; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 29 |  | value_viewer_context_copyashex: TMenuItem; | 
 
 
 
 
 
 
 
 
 | 24 | – | VTHPopup: TVTHeaderPopupMenu; | 
 
 
 
 
 
 
 
 
 | 25 | – | panel_imexport: TPanel; | 
 
 
 
 
 
 
 
 
 | 26 | – | btn_export: TButton; | 
 
 
 
 
 
 
 
 
 | 27 | – | btn_import: TButton; | 
 
 
 
 
 
 
 
 
 | 28 | – | procedure FormCreate(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 30 |  | procedure NewFile(fileinfo: TFileInfo); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 31 |  |  | 
 
 
 
 
 
 
 
 
 | 31 | – | procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | 
 
 
 
 
 
 
 
 
 | 32 | – | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); | 
 
 
 
 
 
 
 
 
 | 33 | – |  | 
 
 
 
 
 
 
 
 
 | 34 | – | procedure hexKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | 
 
 
 
 
 
 
 
 
 | 35 | – | procedure hexSelectionChanged(Sender: TObject); | 
 
 
 
 
 
 
 
 
 | 36 | – | procedure hexChange(Sender: TObject); | 
 
 
 
 
 
 
 
 
 | 37 | – |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 32 |  | procedure LoadDat(_fileid: Integer); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 33 |  | function Save: Boolean; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 34 |  | function GetValue(datatype: Word; offset: Integer): String; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 36 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 37 |  | procedure WriteStructureInfos; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 38 |  | procedure ClearStructViewer; | 
 
 
 
 
 
 
 
 
 | 45 | – | procedure VSTDblClick(Sender: TObject); | 
 
 
 
 
 
 
 
 
 | 46 | – | procedure VSTFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 
 
 
 
 | 47 | – | Column: TColumnIndex); | 
 
 
 
 
 
 
 
 
 | 48 | – | procedure VTHPopupColumnChange(const Sender: TBaseVirtualTree; | 
 
 
 
 
 
 
 
 
 | 49 | – | const Column: TColumnIndex; Visible: Boolean); | 
 
 
 
 
 
 
 
 
 | 50 | – | procedure VSTHeaderDragged(Sender: TVTHeader; Column: TColumnIndex; | 
 
 
 
 
 
 
 
 
 | 51 | – | OldPosition: Integer); | 
 
 
 
 
 
 
 
 
 | 52 | – | procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 
 
 
 
 | 53 | – | Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 39 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 40 |  | procedure ClearValues; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 41 |  | procedure WriteValues; | 
 
 
 
 
 
 
 
 | 42 | + |  | 
 
 
 
 
 
 
 
 | 43 | + | procedure FormCreate(Sender: TObject); | 
 
 
 
 
 
 
 
 | 44 | + | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); | 
 
 
 
 
 
 
 
 | 45 | + | procedure hexChange(Sender: TObject); | 
 
 
 
 
 
 
 
 | 46 | + | procedure hexKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | 
 
 
 
 
 
 
 
 | 47 | + | procedure hexSelectionChanged(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 48 |  | procedure value_viewerDblClick(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 | 49 | < | procedure value_viewer_context_copyClick(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 49 | > | procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | 
 
 
 
 
 | 50 | > | procedure value_viewer_contextPopup(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 | 51 |  | procedure value_viewerMouseDown(Sender: TObject; Button: TMouseButton; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 52 |  | Shift: TShiftState; X, Y: Integer); | 
 
 
 
 
 
 
 
 
 
 
 | 53 | < | procedure value_viewer_contextPopup(Sender: TObject); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 53 | > | procedure value_viewer_context_copyClick(Sender: TObject); | 
 
 
 
 
 | 54 | > | procedure VSTDblClick(Sender: TObject); | 
 
 
 
 
 | 55 | > | procedure VSTFocusChanged(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 | 56 | > | Column: TColumnIndex); | 
 
 
 
 
 | 57 | > | procedure VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; | 
 
 
 
 
 | 58 | > | Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); | 
 
 
 
 
 | 59 | > | procedure VSTHeaderDragged(Sender: TVTHeader; Column: TColumnIndex; | 
 
 
 
 
 | 60 | > | OldPosition: Integer); | 
 
 
 
 
 | 61 | > | procedure VTHPopupColumnChange(const Sender: TBaseVirtualTree; | 
 
 
 
 
 | 62 | > | const Column: TColumnIndex; Visible: Boolean); | 
 
 
 
 
 
 
 
 
 
 
 | 63 |  | private | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 64 |  | fileid: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 65 |  | ConID: Integer; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 67 |  | public | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 68 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 69 |  |  | 
 
 
 
 
 
 
 
 
 | 69 | – | var | 
 
 
 
 
 
 
 
 
 | 70 | – | Form_BinEdit: TForm_BinEdit; | 
 
 
 
 
 
 
 
 
 | 71 | – |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 70 |  | implementation | 
 
 
 
 
 
 
 
 
 | 73 | – |  | 
 
 
 
 
 
 
 
 
 | 74 | – | uses ValueEdit, Main, Functions, DatStructureLoader, RawEdit; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 71 |  | {$R *.dfm} | 
 
 
 
 
 
 
 
 | 72 | + | uses ValueEdit, Main, Functions, DatStructureLoader, RawEdit, RawList, | 
 
 
 
 
 
 
 
 | 73 | + | StrUtils, Clipbrd; | 
 
 
 
 
 
 
 
 | 74 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 75 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 76 |  | type | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 77 |  | PNodeData = ^TNodeData; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 118 |  | // | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 119 |  | end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 120 |  |  | 
 
 
 
 
 
 
 
 | 121 | + |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 122 |  | procedure TForm_BinEdit.NewFile(fileinfo: TFileInfo); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 123 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 124 |  | LoadDat(fileinfo.ID); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 990 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 991 |  |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 992 |  |  | 
 
 
 
 
 
 
 
 
 | 993 | – |  | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 993 |  | procedure TForm_BinEdit.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 994 |  | begin | 
 
 
 
 
 
 
 
 
 
 
 
 
 | 995 |  | if (Shift = [ssCtrl]) and (Key = 83) then |