├── DataFileEditor ├── icons │ ├── folder.bmp │ ├── icon.ico │ ├── icon_128.png │ ├── icon_binary.png │ ├── icon_font.png │ ├── icon_int32.png │ ├── icon_int64.png │ ├── icon_string.png │ ├── icon_uint32.png │ ├── icon_uint64.png │ ├── icon_boolean.png │ ├── icon_calendar.png │ ├── icon_currency.png │ ├── icon_datetime.png │ ├── icon_strings.png │ ├── icon_unknown.png │ ├── folder_selected.bmp │ ├── icon_ansistring.png │ ├── icon_float_double.png │ └── icon_float_single.png ├── DataFileEditor.res ├── lib │ └── BCHexEditor-main │ │ ├── Source │ │ ├── BCHexEditor.pas │ │ ├── BCHexEditor.res │ │ └── BCHexEditorEx.pas │ │ ├── Packages │ │ ├── BCHexEditor.Package.Designtime.dcr │ │ ├── BCHexEditor.Package.Designtime.cpp │ │ ├── BCHexEditor.Package.Runtime.cpp │ │ ├── BCHexEditor.Package.Runtime.dpk │ │ ├── BCHexEditor.Package.Designtime.dpk │ │ ├── BCHexEditor.Package.Designtime.pas │ │ ├── BCHexEditor.Package.Designtime.dproj │ │ ├── BCHexEditor.Package.Runtime.dproj │ │ ├── BCHexEditor.Package.Designtime.cbproj │ │ └── BCHexEditor.Package.Runtime.cbproj │ │ ├── Demo │ │ ├── Demo.dpr │ │ ├── Main.pas │ │ ├── Main.dfm │ │ └── Demo.dproj │ │ └── README.md ├── uDFKey.pas ├── uAbout.pas ├── DataFileEditor.dpr ├── uRename.pas ├── uDFKey.dfm ├── u_extended_treeview.pas ├── uRename.dfm ├── uEditValue.pas └── uEditValue.dfm ├── FreePascal_version ├── DataFileEditor │ ├── uEditValue.lfm │ ├── DataFileEditor.res │ ├── icons │ │ ├── icon_font.png │ │ ├── icon_binary.png │ │ ├── icon_boolean.png │ │ ├── icon_int32.png │ │ ├── icon_int64.png │ │ ├── icon_string.png │ │ ├── icon_strings.png │ │ ├── icon_uint32.png │ │ ├── icon_uint64.png │ │ ├── icon_unknown.png │ │ ├── icon_calendar.png │ │ ├── icon_currency.png │ │ ├── icon_datetime.png │ │ ├── icon_ansistring.png │ │ ├── icon_float_double.png │ │ └── icon_float_single.png │ ├── uAbout.pas │ ├── uDFKey.pas │ ├── DataFileEditor.lpr │ ├── uDFKey.lfm │ ├── u_extended_treeview.pas │ ├── DataFileEditor.lpi │ ├── uEditValue.pas │ ├── uMain.lfm │ └── uMain.pas └── README.md ├── LICENSE ├── .gitignore └── README.md /DataFileEditor/icons/folder.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/folder.bmp -------------------------------------------------------------------------------- /DataFileEditor/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon.ico -------------------------------------------------------------------------------- /DataFileEditor/DataFileEditor.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/DataFileEditor.res -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_128.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_binary.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_font.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_int32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_int32.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_int64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_int64.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_string.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_uint32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_uint32.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_uint64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_uint64.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_boolean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_boolean.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_calendar.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_currency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_currency.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_datetime.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_strings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_strings.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_unknown.png -------------------------------------------------------------------------------- /DataFileEditor/icons/folder_selected.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/folder_selected.bmp -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_ansistring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_ansistring.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_float_double.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_float_double.png -------------------------------------------------------------------------------- /DataFileEditor/icons/icon_float_single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/icons/icon_float_single.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uEditValue.lfm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/uEditValue.lfm -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/DataFileEditor.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/DataFileEditor.res -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_font.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_binary.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_boolean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_boolean.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_int32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_int32.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_int64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_int64.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_string.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_strings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_strings.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_uint32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_uint32.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_uint64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_uint64.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_unknown.png -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditor.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditor.pas -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditor.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditor.res -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_calendar.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_currency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_currency.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_datetime.png -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditorEx.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/lib/BCHexEditor-main/Source/BCHexEditorEx.pas -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_ansistring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_ansistring.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_float_double.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_float_double.png -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/icons/icon_float_single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/FreePascal_version/DataFileEditor/icons/icon_float_single.png -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.dcr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shusaura85/TDataFile/HEAD/DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.dcr -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Demo/Demo.dpr: -------------------------------------------------------------------------------- 1 | program Demo; 2 | 3 | uses 4 | Forms, 5 | Main in 'Main.pas' {MainForm}; 6 | 7 | begin 8 | Application.Initialize; 9 | Application.MainFormOnTaskbar := True; 10 | Application.CreateForm(TMainForm, MainForm); 11 | Application.Run; 12 | end. 13 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uAbout.pas: -------------------------------------------------------------------------------- 1 | unit uAbout; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, 9 | ExtCtrls; 10 | 11 | type 12 | TfrmAbout = class(TForm) 13 | Image1: TImage; 14 | Label1: TLabel; 15 | Label2: TLabel; 16 | btn_Save: TButton; 17 | Bevel1: TBevel; 18 | private 19 | { Private declarations } 20 | public 21 | { Public declarations } 22 | end; 23 | 24 | var 25 | frmAbout: TfrmAbout; 26 | 27 | implementation 28 | 29 | {$R *.lfm} 30 | 31 | end. 32 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Demo/Main.pas: -------------------------------------------------------------------------------- 1 | unit Main; 2 | 3 | interface 4 | 5 | uses 6 | SysUtils, Variants, Classes, 7 | Windows, Messages, 8 | Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Grids, 9 | BCHexEditor; 10 | 11 | type 12 | TMainForm = class(TForm) 13 | BCHexEditor1: TBCHexEditor; 14 | procedure FormCreate(Sender: TObject); 15 | end; 16 | 17 | var 18 | MainForm: TMainForm; 19 | 20 | implementation 21 | 22 | {$R *.dfm} 23 | 24 | procedure TMainForm.FormCreate(Sender: TObject); 25 | begin 26 | BCHexEditor1.LoadFromFile(Application.ExeName); 27 | end; 28 | 29 | end. 30 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | extern "C" int _libmain(unsigned long reason) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | 19 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Runtime.cpp: -------------------------------------------------------------------------------- 1 | //--------------------------------------------------------------------------- 2 | 3 | #include 4 | #pragma hdrstop 5 | #pragma package(smart_init) 6 | //--------------------------------------------------------------------------- 7 | 8 | // Package source. 9 | //--------------------------------------------------------------------------- 10 | 11 | 12 | #pragma argsused 13 | extern "C" int _libmain(unsigned long reason) 14 | { 15 | return 1; 16 | } 17 | //--------------------------------------------------------------------------- 18 | 19 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Demo/Main.dfm: -------------------------------------------------------------------------------- 1 | object MainForm: TMainForm 2 | Left = 0 3 | Top = 0 4 | Caption = 'BCHexEditor Demo' 5 | ClientHeight = 530 6 | ClientWidth = 706 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | OnCreate = FormCreate 15 | PixelsPerInch = 106 16 | TextHeight = 14 17 | object BCHexEditor1: TBCHexEditor 18 | Left = 0 19 | Top = 0 20 | Width = 706 21 | Height = 530 22 | Align = alClient 23 | TabOrder = 0 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uDFKey.pas: -------------------------------------------------------------------------------- 1 | unit uDFKey; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls; 9 | 10 | type 11 | TfrmDFkey = class(TForm) 12 | edit_filename: TEdit; 13 | Label1: TLabel; 14 | Label2: TLabel; 15 | edit_Password: TEdit; 16 | lbl_InfoOpen: TLabel; 17 | lbl_InfoNew: TLabel; 18 | Button1: TButton; 19 | private 20 | { Private declarations } 21 | public 22 | { Public declarations } 23 | end; 24 | 25 | var 26 | frmDFkey: TfrmDFkey; 27 | 28 | implementation 29 | 30 | {$R *.lfm} 31 | 32 | end. 33 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/README.md: -------------------------------------------------------------------------------- 1 | https://github.com/zhugecaomao/BCHexEditor 2 | 3 |

Description

4 | 5 | A hex edit control for the RAD Studio (Delphi and C++ Builder VCL) with addresses, hexadecimal values, text values. The text characters can be 8 bit or Unicode. Colors and several other options can be changed. 6 | 7 |

Build requirements

8 | 9 | * Delphi XE4 or higher 10 | * C++ Builder XE4 or higher 11 | 12 |

Demo

13 | 14 | * BCHexEditor Demo 15 | 16 |

Screenshot

17 | 18 | ![bchexeditor0](http://www.mysqlfront.de/bonecode/BCH.png) 19 | -------------------------------------------------------------------------------- /DataFileEditor/uDFKey.pas: -------------------------------------------------------------------------------- 1 | unit uDFKey; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 8 | 9 | type 10 | TfrmDFkey = class(TForm) 11 | edit_filename: TEdit; 12 | Label1: TLabel; 13 | Label2: TLabel; 14 | edit_Password: TEdit; 15 | lbl_InfoOpen: TLabel; 16 | lbl_InfoNew: TLabel; 17 | Button1: TButton; 18 | private 19 | { Private declarations } 20 | public 21 | { Public declarations } 22 | end; 23 | 24 | var 25 | frmDFkey: TfrmDFkey; 26 | 27 | implementation 28 | 29 | {$R *.dfm} 30 | 31 | end. 32 | -------------------------------------------------------------------------------- /DataFileEditor/uAbout.pas: -------------------------------------------------------------------------------- 1 | unit uAbout; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, 8 | Vcl.Imaging.pngimage, ShellApi; 9 | 10 | type 11 | TfrmAbout = class(TForm) 12 | Image1: TImage; 13 | Label1: TLabel; 14 | Label2: TLabel; 15 | btn_Save: TButton; 16 | Bevel1: TBevel; 17 | Label3: TLabel; 18 | private 19 | { Private declarations } 20 | public 21 | { Public declarations } 22 | end; 23 | 24 | var 25 | frmAbout: TfrmAbout; 26 | 27 | implementation 28 | 29 | {$R *.dfm} 30 | 31 | end. 32 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/DataFileEditor.lpr: -------------------------------------------------------------------------------- 1 | program DataFileEditor; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | uses 6 | {$IFDEF UNIX} 7 | cthreads, 8 | {$ENDIF} 9 | {$IFDEF HASAMIGA} 10 | athreads, 11 | {$ENDIF} 12 | Interfaces, // this includes the LCL widgetset 13 | Forms, 14 | uMain in 'uMain.pas' {frmMain}, 15 | DataFile in '..\DataFile.pp', 16 | u_extended_treeview in 'u_extended_treeview.pas', 17 | uEditValue in 'uEditValue.pas' {frmEdit}, 18 | uDFKey in 'uDFKey.pas' {frmDFkey}, 19 | uAbout in 'uAbout.pas' {frmAbout}; 20 | 21 | {$R *.res} 22 | 23 | begin 24 | RequireDerivedFormResource:=True; 25 | Application.Scaled:=True; 26 | Application.Initialize; 27 | Application.CreateForm(TfrmMain, frmMain); 28 | Application.CreateForm(TfrmAbout, frmAbout); 29 | Application.Run; 30 | end. 31 | -------------------------------------------------------------------------------- /DataFileEditor/DataFileEditor.dpr: -------------------------------------------------------------------------------- 1 | program DataFileEditor; 2 | 3 | uses 4 | Vcl.Forms, 5 | uMain in 'uMain.pas' {frmMain}, 6 | DataFile in '..\DataFile.pas', 7 | u_extended_treeview in 'u_extended_treeview.pas', 8 | Vcl.Themes, 9 | Vcl.Styles, 10 | uEditValue in 'uEditValue.pas' {frmEdit}, 11 | BCHexEditor in 'lib\BCHexEditor-main\Source\BCHexEditor.pas', 12 | uDFKey in 'uDFKey.pas' {frmDFkey}, 13 | uAbout in 'uAbout.pas' {frmAbout}, 14 | uRename in 'uRename.pas' {frmRename}; 15 | 16 | {$R *.res} 17 | 18 | begin 19 | Application.Initialize; 20 | Application.MainFormOnTaskbar := True; 21 | Application.CreateForm(TfrmMain, frmMain); 22 | Application.CreateForm(TfrmAbout, frmAbout); 23 | // Application.CreateForm(TfrmRename, frmRename); 24 | // Application.CreateForm(TfrmEdit, frmEdit); 25 | Application.Run; 26 | end. 27 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Runtime.dpk: -------------------------------------------------------------------------------- 1 | package BCHexEditor.Package.Runtime; 2 | 3 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 4 | {$ALIGN 8} 5 | {$ASSERTIONS ON} 6 | {$BOOLEVAL OFF} 7 | {$DEBUGINFO ON} 8 | {$EXTENDEDSYNTAX ON} 9 | {$IMPORTEDDATA ON} 10 | {$IOCHECKS ON} 11 | {$LOCALSYMBOLS ON} 12 | {$LONGSTRINGS ON} 13 | {$OPENSTRINGS ON} 14 | {$OPTIMIZATION OFF} 15 | {$OVERFLOWCHECKS OFF} 16 | {$RANGECHECKS OFF} 17 | {$REFERENCEINFO ON} 18 | {$SAFEDIVIDE OFF} 19 | {$STACKFRAMES ON} 20 | {$TYPEDADDRESS OFF} 21 | {$VARSTRINGCHECKS ON} 22 | {$WRITEABLECONST OFF} 23 | {$MINENUMSIZE 1} 24 | {$IMAGEBASE $400000} 25 | {$DEFINE DEBUG} 26 | {$ENDIF IMPLICITBUILDING} 27 | {$DESCRIPTION 'BCHexEditor Components'} 28 | {$IMPLICITBUILD ON} 29 | 30 | requires 31 | rtl, 32 | vcl; 33 | 34 | contains 35 | BCHexEditor in '..\Source\BCHexEditor.pas', 36 | BCHexEditorEx in '..\Source\BCHexEditorEx.pas'; 37 | 38 | end. 39 | 40 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.dpk: -------------------------------------------------------------------------------- 1 | package BCHexEditor.Package.Designtime; 2 | 3 | {$R 'BCHexEditor.Package.Designtime.dcr'} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO ON} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS OFF} 17 | {$RANGECHECKS OFF} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$DESCRIPTION 'BCHexEditor Components'} 29 | {$DESIGNONLY} 30 | {$IMPLICITBUILD ON} 31 | 32 | requires 33 | rtl, 34 | designide, 35 | BCHexEditor.Package.Runtime; 36 | 37 | contains 38 | BCHexEditor.Package.Designtime in 'BCHexEditor.Package.Designtime.pas'; 39 | 40 | end. 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Shu Saura 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /DataFileEditor/uRename.pas: -------------------------------------------------------------------------------- 1 | unit uRename; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; 8 | 9 | type 10 | TfrmRename = class(TForm) 11 | Label6: TLabel; 12 | edit_OldPath: TEdit; 13 | Label7: TLabel; 14 | edit_OldName: TEdit; 15 | Shape1: TShape; 16 | Label1: TLabel; 17 | edit_NewPath: TEdit; 18 | Label2: TLabel; 19 | edit_NewName: TEdit; 20 | Panel1: TPanel; 21 | btn_Save: TButton; 22 | Button2: TButton; 23 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 24 | private 25 | { Private declarations } 26 | public 27 | { Public declarations } 28 | end; 29 | 30 | var 31 | frmRename: TfrmRename; 32 | 33 | implementation 34 | 35 | {$R *.dfm} 36 | 37 | procedure TfrmRename.FormClose(Sender: TObject; var Action: TCloseAction); 38 | begin 39 | // drop the last "/" if set (DataFile Editor will not see any keys stored with a final / 40 | if edit_NewPath.Text[Length(edit_NewPath.Text)] = '/' then 41 | edit_NewPath.Text := String(edit_NewPath.Text).TrimRight(['/']); 42 | 43 | end; 44 | 45 | end. 46 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | -------------------------------------------------------------------------------- /DataFileEditor/uDFKey.dfm: -------------------------------------------------------------------------------- 1 | object frmDFkey: TfrmDFkey 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | Caption = 'Access key for DataFile' 6 | ClientHeight = 240 7 | ClientWidth = 600 8 | Color = clBtnFace 9 | DoubleBuffered = True 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -13 13 | Font.Name = 'Segoe UI' 14 | Font.Style = [] 15 | Font.Quality = fqClearTypeNatural 16 | OldCreateOrder = False 17 | DesignSize = ( 18 | 600 19 | 240) 20 | PixelsPerInch = 96 21 | TextHeight = 17 22 | object Label1: TLabel 23 | Left = 20 24 | Top = 8 25 | Width = 51 26 | Height = 17 27 | Caption = 'Data file:' 28 | end 29 | object Label2: TLabel 30 | Left = 20 31 | Top = 80 32 | Width = 75 33 | Height = 17 34 | Caption = 'Data file key:' 35 | end 36 | object lbl_InfoOpen: TLabel 37 | Left = 24 38 | Top = 144 39 | Width = 258 40 | Height = 17 41 | Caption = 'Leave empty if the data file is not protected!' 42 | Visible = False 43 | end 44 | object lbl_InfoNew: TLabel 45 | Left = 24 46 | Top = 144 47 | Width = 322 48 | Height = 17 49 | Caption = 'Leave empty if you do not want to protect the data file!' 50 | Visible = False 51 | end 52 | object edit_filename: TEdit 53 | Left = 20 54 | Top = 31 55 | Width = 560 56 | Height = 25 57 | Anchors = [akLeft, akTop, akRight] 58 | ReadOnly = True 59 | TabOrder = 0 60 | end 61 | object edit_Password: TEdit 62 | Left = 20 63 | Top = 103 64 | Width = 560 65 | Height = 25 66 | Anchors = [akLeft, akTop, akRight] 67 | ReadOnly = True 68 | TabOrder = 1 69 | end 70 | object Button1: TButton 71 | Left = 456 72 | Top = 180 73 | Width = 124 74 | Height = 40 75 | Anchors = [akRight, akBottom] 76 | Caption = 'OK' 77 | Default = True 78 | ModalResult = 1 79 | TabOrder = 2 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uDFKey.lfm: -------------------------------------------------------------------------------- 1 | object frmDFkey: TfrmDFkey 2 | Left = 356 3 | Height = 240 4 | Top = 303 5 | Width = 600 6 | BorderIcons = [biSystemMenu] 7 | Caption = 'Access key for DataFile' 8 | ClientHeight = 240 9 | ClientWidth = 600 10 | Color = clBtnFace 11 | DoubleBuffered = True 12 | Font.Color = clWindowText 13 | Font.Height = -13 14 | Font.Name = 'Segoe UI' 15 | Font.Quality = fqCleartypeNatural 16 | ParentDoubleBuffered = False 17 | LCLVersion = '2.2.6.0' 18 | object Label1: TLabel 19 | Left = 20 20 | Height = 17 21 | Top = 8 22 | Width = 51 23 | Caption = 'Data file:' 24 | ParentColor = False 25 | end 26 | object Label2: TLabel 27 | Left = 20 28 | Height = 17 29 | Top = 80 30 | Width = 75 31 | Caption = 'Data file key:' 32 | ParentColor = False 33 | end 34 | object lbl_InfoOpen: TLabel 35 | Left = 24 36 | Height = 17 37 | Top = 144 38 | Width = 258 39 | Caption = 'Leave empty if the data file is not protected!' 40 | ParentColor = False 41 | Visible = False 42 | end 43 | object lbl_InfoNew: TLabel 44 | Left = 24 45 | Height = 17 46 | Top = 144 47 | Width = 322 48 | Caption = 'Leave empty if you do not want to protect the data file!' 49 | ParentColor = False 50 | Visible = False 51 | end 52 | object edit_filename: TEdit 53 | Left = 20 54 | Height = 25 55 | Top = 31 56 | Width = 560 57 | Anchors = [akTop, akLeft, akRight] 58 | ReadOnly = True 59 | TabOrder = 0 60 | end 61 | object edit_Password: TEdit 62 | Left = 20 63 | Height = 25 64 | Top = 103 65 | Width = 560 66 | Anchors = [akTop, akLeft, akRight] 67 | ReadOnly = True 68 | TabOrder = 1 69 | end 70 | object Button1: TButton 71 | Left = 456 72 | Height = 40 73 | Top = 180 74 | Width = 124 75 | Anchors = [akRight, akBottom] 76 | Caption = 'OK' 77 | Default = True 78 | ModalResult = 1 79 | TabOrder = 2 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /DataFileEditor/u_extended_treeview.pas: -------------------------------------------------------------------------------- 1 | unit u_extended_treeview; 2 | 3 | interface 4 | 5 | uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.ComCtrls; 6 | 7 | type 8 | TDFTreeNode = class(TTreeNode) 9 | public 10 | Section: string; 11 | end; 12 | 13 | function GetPathFromNode(ANode: TTreeNode): String; 14 | function GetNodeByText(ATree : TTreeView; AValue:String; AVisible: Boolean = false): TTreeNode; 15 | 16 | 17 | implementation 18 | 19 | // build a text representation of the tree structure for the selected node 20 | function GetPathFromNode(ANode: TTreeNode): String; 21 | begin 22 | if ANode <> nil then 23 | begin 24 | if ANode.Parent <> nil then 25 | Result := GetPathFromNode(ANode.Parent) + '/' + ANode.Text 26 | else 27 | Result := ANode.Text; 28 | end 29 | else 30 | Result := ''; 31 | end; 32 | 33 | function GetNodeByText(ATree : TTreeView; AValue:String; AVisible: Boolean = false): TTreeNode; 34 | var 35 | Node: TTreeNode; 36 | path: string; 37 | begin 38 | Result := nil; 39 | if ATree.Items.Count = 0 then Exit; 40 | Node := ATree.Items[0]; 41 | while Node <> nil do 42 | begin 43 | path := UpperCase(TDFTreeNode(Node).Section); 44 | if path = '' then path := GetPathFromNode(Node); // if the DFTreeNode.Section is missing, build it 45 | if path = UpperCase(AValue) then 46 | begin 47 | Result := Node; 48 | if AVisible then Result.MakeVisible; 49 | Break; 50 | end; 51 | Node := Node.GetNext; 52 | end; 53 | end; 54 | 55 | 56 | { 57 | To use this node type in a treeview, you need to specify in the OnCreateNodeClass 58 | event to use the node type 59 | 60 | // -------------------------- 61 | procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView; 62 | var NodeClass: TTreeNodeClass); 63 | begin 64 | NodeClass := TDFTreeNode; 65 | end; 66 | // -------------------------- 67 | 68 | to access/read/write data to custom properties, use 69 | TDFTreeNode(Node). 70 | 71 | } 72 | 73 | end. 74 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/u_extended_treeview.pas: -------------------------------------------------------------------------------- 1 | unit u_extended_treeview; 2 | 3 | {$mode objfpc} 4 | 5 | interface 6 | 7 | uses Windows, Messages, SysUtils, Variants, Classes, ComCtrls; 8 | 9 | type 10 | TDFTreeNode = class(TTreeNode) 11 | public 12 | Section: string; 13 | end; 14 | 15 | function GetPathFromNode(ANode: TTreeNode): String; 16 | function GetNodeByText(ATree : TTreeView; AValue:String; AVisible: Boolean = false): TTreeNode; 17 | 18 | 19 | implementation 20 | 21 | // build a text representation of the tree structure for the selected node 22 | function GetPathFromNode(ANode: TTreeNode): String; 23 | begin 24 | if ANode <> nil then 25 | begin 26 | if ANode.Parent <> nil then 27 | Result := GetPathFromNode(ANode.Parent) + '/' + ANode.Text 28 | else 29 | Result := ANode.Text; 30 | end 31 | else 32 | Result := ''; 33 | end; 34 | 35 | function GetNodeByText(ATree : TTreeView; AValue:String; AVisible: Boolean = false): TTreeNode; 36 | var 37 | Node: TTreeNode; 38 | path: string; 39 | begin 40 | Result := nil; 41 | if ATree.Items.Count = 0 then Exit; 42 | Node := ATree.Items[0]; 43 | while Node <> nil do 44 | begin 45 | path := UpperCase(TDFTreeNode(Node).Section); 46 | if path = '' then path := GetPathFromNode(Node); // if the DFTreeNode.Section is missing, build it 47 | if path = UpperCase(AValue) then 48 | begin 49 | Result := Node; 50 | if AVisible then Result.MakeVisible; 51 | Break; 52 | end; 53 | Node := Node.GetNext; 54 | end; 55 | end; 56 | 57 | 58 | { 59 | To use this node type in a treeview, you need to specify in the OnCreateNodeClass 60 | event to use the node type 61 | 62 | // -------------------------- 63 | procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView; 64 | var NodeClass: TTreeNodeClass); 65 | begin 66 | NodeClass := TDFTreeNode; 67 | end; 68 | // -------------------------- 69 | 70 | to access/read/write data to custom properties, use 71 | TDFTreeNode(Node). 72 | 73 | } 74 | 75 | end. 76 | -------------------------------------------------------------------------------- /DataFileEditor/uRename.dfm: -------------------------------------------------------------------------------- 1 | object frmRename: TfrmRename 2 | Left = 0 3 | Top = 0 4 | ActiveControl = edit_NewName 5 | Caption = 'Rename key' 6 | ClientHeight = 249 7 | ClientWidth = 705 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -13 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Font.Quality = fqClearTypeNatural 15 | OldCreateOrder = False 16 | Position = poOwnerFormCenter 17 | OnClose = FormClose 18 | DesignSize = ( 19 | 705 20 | 249) 21 | PixelsPerInch = 96 22 | TextHeight = 17 23 | object Label6: TLabel 24 | Left = 15 25 | Top = 26 26 | Width = 99 27 | Height = 17 28 | Alignment = taRightJustify 29 | Caption = 'Current key path:' 30 | end 31 | object Label7: TLabel 32 | Left = 8 33 | Top = 57 34 | Width = 105 35 | Height = 17 36 | Alignment = taRightJustify 37 | Caption = 'Current key name:' 38 | end 39 | object Shape1: TShape 40 | Left = 8 41 | Top = 96 42 | Width = 689 43 | Height = 5 44 | Brush.Style = bsClear 45 | end 46 | object Label1: TLabel 47 | Left = 32 48 | Top = 130 49 | Width = 82 50 | Height = 17 51 | Alignment = taRightJustify 52 | Caption = 'New key path:' 53 | end 54 | object Label2: TLabel 55 | Left = 25 56 | Top = 161 57 | Width = 88 58 | Height = 17 59 | Alignment = taRightJustify 60 | Caption = 'New key name:' 61 | end 62 | object edit_OldPath: TEdit 63 | Left = 120 64 | Top = 23 65 | Width = 561 66 | Height = 25 67 | Anchors = [akLeft, akTop, akRight] 68 | Enabled = False 69 | ReadOnly = True 70 | TabOrder = 0 71 | end 72 | object edit_OldName: TEdit 73 | Left = 119 74 | Top = 54 75 | Width = 561 76 | Height = 25 77 | Anchors = [akLeft, akTop, akRight] 78 | Enabled = False 79 | ReadOnly = True 80 | TabOrder = 1 81 | end 82 | object edit_NewPath: TEdit 83 | Left = 120 84 | Top = 127 85 | Width = 561 86 | Height = 25 87 | Anchors = [akLeft, akTop, akRight] 88 | TabOrder = 2 89 | end 90 | object edit_NewName: TEdit 91 | Left = 120 92 | Top = 158 93 | Width = 561 94 | Height = 25 95 | Anchors = [akLeft, akTop, akRight] 96 | TabOrder = 3 97 | end 98 | object Panel1: TPanel 99 | Left = 0 100 | Top = 208 101 | Width = 705 102 | Height = 41 103 | Align = alBottom 104 | BevelOuter = bvNone 105 | TabOrder = 4 106 | ExplicitLeft = -66 107 | ExplicitTop = 258 108 | ExplicitWidth = 771 109 | DesignSize = ( 110 | 705 111 | 41) 112 | object btn_Save: TButton 113 | Left = 621 114 | Top = 3 115 | Width = 75 116 | Height = 30 117 | Anchors = [akTop, akRight] 118 | Caption = 'Save' 119 | Default = True 120 | ModalResult = 1 121 | TabOrder = 0 122 | ExplicitLeft = 687 123 | end 124 | object Button2: TButton 125 | Left = 5 126 | Top = 3 127 | Width = 75 128 | Height = 30 129 | Caption = 'Cancel' 130 | ModalResult = 2 131 | TabOrder = 1 132 | end 133 | end 134 | end 135 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.pas: -------------------------------------------------------------------------------- 1 | unit BCHexEditor.Package.Designtime; 2 | 3 | interface {********************************************************************} 4 | 5 | uses 6 | Classes, DesignIntf, DesignEditors, 7 | BCHexEditor, BCHexEditorEx; 8 | 9 | type 10 | TBytesPerUnitProperty = class(TIntegerProperty) 11 | public 12 | function GetAttributes: TPropertyAttributes; override; 13 | procedure GetValues(Proc: TGetStrProc); override; 14 | end; 15 | 16 | TRulerNumberBaseProperty = class(TIntegerProperty) 17 | public 18 | function GetAttributes: TPropertyAttributes; override; 19 | procedure GetValues(Proc: TGetStrProc); override; 20 | end; 21 | 22 | procedure Register; 23 | 24 | implementation {***************************************************************} 25 | 26 | uses 27 | SysUtils; 28 | 29 | procedure Register; 30 | begin 31 | RegisterComponents('BCHexEditor', [TBCHexEditor, TBCHexEditorEx]); 32 | 33 | RegisterPropertyEditor(TypeInfo(Integer), TCustomBCHexEditor, 'BytesPerUnit', 34 | TBytesPerUnitProperty); 35 | RegisterPropertyEditor(TypeInfo(Byte), TCustomBCHexEditor, 'RulerNumberBase', 36 | TRulerNumberBaseProperty); 37 | 38 | RegisterPropertiesInCategory(sVisualCategoryName, TCustomBCHexEditor, 39 | ['DrawGridLines', 'Colors', 'CaretStyle', 'BytesPerRow', 'FocusFrame', 40 | 'BytesPerColumn', 41 | 'GraySelectionIfNotFocused', 'MaskChar', 'OffsetFormat', 'ReadOnlyView', 42 | 'HexLowerCase', 'ZoomOnWheel', 'DrawGutter3D', 'ShowRuler', 43 | 'GutterWidth', 'HideSelection', 'PrintOptions', 'ScrollBars', 44 | 'Translation', 'SeparateBlocksInCharField', 45 | 'BytesPerUnit', 'CaretKind', 'RulerBytesPerUnit', 'BytesPerBlock', 46 | 'ShowPositionIfNotFocused', 'UnicodeChars', 'UnicodeBigEndian', 47 | 'RulerNumberBase', 'AutoBytesPerRow']); 48 | RegisterPropertyInCategory(sDragNDropCategoryName, TCustomBCHexEditor, 49 | 'OleDragDrop'); 50 | RegisterPropertyInCategory(sInputCategoryName, TCustomBCHexEditor, 51 | 'OnInvalidKey'); 52 | end; 53 | 54 | { TBytesPerUnitProperty } 55 | 56 | type 57 | TInt_Hexer = class(TCustomBCHexEditor); // propagate protected properties 58 | 59 | function TBytesPerUnitProperty.GetAttributes: TPropertyAttributes; 60 | var 61 | bRO: boolean; 62 | i: integer; 63 | begin 64 | bRo := False; 65 | if PropCount > 0 then 66 | for i := 0 to Pred(PropCount) do 67 | begin 68 | if GetComponent(i) is TCustomBCHexEditor then 69 | if TInt_Hexer(GetComponent(i)).UnicodeChars then 70 | begin 71 | bRO := True; 72 | Break; 73 | end; 74 | end; 75 | 76 | Result := [paValueList, paSortList, paRevertable, paMultiSelect]; 77 | if bRO then 78 | Include(Result, paReadOnly); 79 | end; 80 | 81 | procedure TBytesPerUnitProperty.GetValues(Proc: TGetStrProc); 82 | begin 83 | if not (paReadOnly in GetAttributes) then // unicode? no. 84 | begin 85 | Proc('1'); 86 | Proc('2'); 87 | Proc('4'); 88 | Proc('8'); 89 | end 90 | else 91 | Proc('2'); // unicode 92 | end; 93 | 94 | function TRulerNumberBaseProperty.GetAttributes: TPropertyAttributes; 95 | begin 96 | Result := [paValueList, paRevertable, paMultiSelect]; 97 | end; 98 | 99 | procedure TRulerNumberBaseProperty.GetValues(Proc: TGetStrProc); 100 | var 101 | i: integer; 102 | begin 103 | for i := 2 to 16 104 | do 105 | Proc(IntToStr(i)); 106 | end; 107 | 108 | end. 109 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/DataFileEditor.lpi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <UseAppBundle Value="False"/> 16 | <ResourceType Value="res"/> 17 | <UseXPManifest Value="True"/> 18 | <Icon Value="0"/> 19 | </General> 20 | <BuildModes> 21 | <Item Name="Default" Default="True"/> 22 | </BuildModes> 23 | <PublishOptions> 24 | <Version Value="2"/> 25 | <UseFileFilters Value="True"/> 26 | </PublishOptions> 27 | <RunParams> 28 | <FormatVersion Value="2"/> 29 | </RunParams> 30 | <RequiredPackages> 31 | <Item> 32 | <PackageName Value="mphexeditorlaz"/> 33 | </Item> 34 | <Item> 35 | <PackageName Value="DateTimeCtrlsDsgn"/> 36 | </Item> 37 | <Item> 38 | <PackageName Value="DateTimeCtrls"/> 39 | </Item> 40 | <Item> 41 | <PackageName Value="LCL"/> 42 | </Item> 43 | </RequiredPackages> 44 | <Units> 45 | <Unit> 46 | <Filename Value="DataFileEditor.lpr"/> 47 | <IsPartOfProject Value="True"/> 48 | </Unit> 49 | <Unit> 50 | <Filename Value="uMain.pas"/> 51 | <IsPartOfProject Value="True"/> 52 | <ComponentName Value="frmMain"/> 53 | <HasResources Value="True"/> 54 | <ResourceBaseClass Value="Form"/> 55 | </Unit> 56 | <Unit> 57 | <Filename Value="u_extended_treeview.pas"/> 58 | <IsPartOfProject Value="True"/> 59 | </Unit> 60 | <Unit> 61 | <Filename Value="uEditValue.pas"/> 62 | <IsPartOfProject Value="True"/> 63 | <ComponentName Value="frmEdit"/> 64 | <HasResources Value="True"/> 65 | <ResourceBaseClass Value="Form"/> 66 | </Unit> 67 | <Unit> 68 | <Filename Value="uDFKey.pas"/> 69 | <IsPartOfProject Value="True"/> 70 | <ComponentName Value="frmDFkey"/> 71 | <HasResources Value="True"/> 72 | <ResourceBaseClass Value="Form"/> 73 | </Unit> 74 | <Unit> 75 | <Filename Value="uAbout.pas"/> 76 | <IsPartOfProject Value="True"/> 77 | <ComponentName Value="frmAbout"/> 78 | <HasResources Value="True"/> 79 | <ResourceBaseClass Value="Form"/> 80 | </Unit> 81 | </Units> 82 | </ProjectOptions> 83 | <CompilerOptions> 84 | <Version Value="11"/> 85 | <PathDelim Value="\"/> 86 | <SearchPaths> 87 | <IncludeFiles Value="lib\BCHexEditor-main\Source;$(ProjOutDir)"/> 88 | <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> 89 | </SearchPaths> 90 | <Parsing> 91 | <SyntaxOptions> 92 | <SyntaxMode Value="Delphi"/> 93 | </SyntaxOptions> 94 | </Parsing> 95 | <Linking> 96 | <Debugging> 97 | <DebugInfoType Value="dsDwarf3"/> 98 | </Debugging> 99 | <Options> 100 | <Win32> 101 | <GraphicApplication Value="True"/> 102 | </Win32> 103 | </Options> 104 | </Linking> 105 | </CompilerOptions> 106 | <Debugging> 107 | <Exceptions> 108 | <Item> 109 | <Name Value="EAbort"/> 110 | </Item> 111 | <Item> 112 | <Name Value="ECodetoolError"/> 113 | </Item> 114 | <Item> 115 | <Name Value="EFOpenError"/> 116 | </Item> 117 | </Exceptions> 118 | </Debugging> 119 | </CONFIG> 120 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TDataFile for Delphi 2 | 3 | This class works in a similar way to a standard **TIniFile** with many similar methods but more powerful for stored data in binary file. The class also supports basic xor encoding to scramble the binary file further. 4 | 5 | Built-in data types are stored with the values and can be checked before reading them. 6 | 7 | Any write operations are automatically saved to the opened file. 8 | 9 | ## Supported data types 10 | The following types are supported by TDataFile: 11 | 12 | - Streams (any TStream descendant) 13 | - Strings 14 | - Ansi Strings 15 | - String List (any TStrings descendant) 16 | - Booleans 17 | - 8-bit signed and unsigned integers 18 | - 16-bit signed and unsigned integers 19 | - 32-bit signed and unsigned integers 20 | - 64-bit signed and unsigned integers 21 | - Single and Double floats 22 | - Currency 23 | - Date Time 24 | - Font (name, style, size, etc) 25 | - Any data type (using ReadData() and WriteData()) 26 | 27 | ## Constructor 28 | The constructor creates a new instance of TDataFile. 29 | 30 | constructor Create(const FileName: string; readonly: boolean = false); 31 | 32 | Parameter **FileName** specifies the path and file name of the data file you open or create. 33 | Parameter **readonly** specifies if the file is opened as readonly. In readonly mode the write functions will not do anything. 34 | 35 | If you want to use the built-in encoding, set the **CodeKey** property after creating the class object. 36 | 37 | var df: TDataFile; 38 | df := TDataFile.Create('filename'); 39 | df.CodeKey := 'key used to encode data'; 40 | 41 | 42 | ## Available functions and procedures 43 | 44 | 45 | |Function|Parameters|Return type|Information| 46 | |--|--|--|--| 47 | |GetSectionNames|List: TStrings|*none*|Returns a list of the existing sections in the file| 48 | |GetValueNames|Section: string; List: TStrings|*none*|Returns a list of existing values in the specified section| 49 | |GetValueNamesAndTypes|Section: string; List: TStrings|*none*|Returns a list of existing values and their data types in the specified section. Use List.Names[] and List.Values[] for the data| 50 | |GetValueType|Section, Ident: string|TDFType|Returns the data type for the specified value| 51 | |GetValueTypeAsString|Section, Ident: string|string|Same as **GetValueType** but returns the data type as a string| 52 | |SectionExists|Section: string|Boolean|Check if the specified section exists| 53 | |ValueExists|Section, Ident: string|Boolean|Check if the value exists in the section| 54 | |ReadData|Section, Ident: string; pBuf: Pointer|Integer|Low level function to read any data stored to the specified pointer| 55 | |ReadStream|Section, Ident: string; Stream: TStream|Integer|Read a stream from the datafile | 56 | |ReadANSIString|Section, Ident: string; Default: ansistring|ansistring|Read an ANSI String from the datafile. If the identifier doesn't exist, returns the *Default* value| 57 | |ReadString|Section, Ident: string; Default: string|string|Read a unicode String from the datafile. If the identifier doesn't exist, returns the *Default* value| 58 | |ReadInt8|Section, Ident: string; Default: Int8|Int8|Read a signed 8-bit integer| 59 | |ReadInt16|Section, Ident: string; Default: Int16|Int16|Read a signed 16-bit integer| 60 | |ReadUInt8|Section, Ident: string; Default: UInt8|UInt8|Read an unsigned 8-bit integer| 61 | |ReadUInt16|Section, Ident: string; Default: UInt16|UInt16|Read an unsigned 16-bit integer| 62 | |ReadInteger, ReadInt32|Section, Ident: string; Default: Integer|Integer|Read a signed 32-bit integer| 63 | |ReadInt64|Section, Ident: string; Default: Int64|Int64|Read a signed 64-bit integer| 64 | |ReadUInt32|Section, Ident: string; Default: UInt32|UInt32|Read an unsigned 32-bit integer| 65 | |ReadUInt64|Section, Ident: string; Default: UInt64|UInt64|Read an unsigned 64-bit integer| 66 | |ReadSingle|Section, Ident: string; Default: Single|Single|Read a 32-bit float| 67 | |ReadDouble|Section, Ident: string; Default: Double|Double|Read a 64-bit float| 68 | |ReadCurrency|Section, Ident: string; Default: Currency|Currency|Read a currency value| 69 | |ReadDateTime|Section, Ident: string; Default: TDateTime|TDateTime|Read a datetime value| 70 | |ReadBoolean|Section, Ident: string; Default: Boolean|Boolean|Read a boolean value| 71 | |ReadStrings|Section, Ident: string; List: TStrings|*none*|Read a string list in the specified *List*| 72 | |ReadFont|Section, Ident: string; Font: TFont|*none*|Read font settings (name, style, size, etc) in the specified *Font*| 73 | |WriteData|Section, Ident: string; pBuf: Pointer; Count: Integer; DataType: TDFType = dfd_Unknown|Integer|Low level function to write any data stored to the specified pointer| 74 | |WriteStream|Section, Ident: string; Stream: TStream; DataType: TDFType = dfd_Stream|Integer|Write a stream from the datafile | 75 | |WriteANSIString|Section, Ident: string; Value: ansistring|*none*|Write an ANSI String from the datafile. If the identifier doesn't exist, returns the *Default* value| 76 | |WriteString|Section, Ident, Value: string|*none*|Write a unicode String from the datafile. If the identifier doesn't exist, returns the *Default* value| 77 | |WriteInt8|Section, Ident: string; Value: Int8|*none*|Write a signed 8-bit integer| 78 | |WriteInt16|Section, Ident: string; Value: Int16|*none*|Write a signed 16-bit integer| 79 | |WriteUInt8|Section, Ident: string; Value: UInt8|*none*|Write an unsigned 8-bit integer| 80 | |WriteUInt16|Section, Ident: string; Value: UInt16|*none*|Write an unsigned 16-bit integer| 81 | |WriteInteger, WriteInt32|Section, Ident: string; Value: Integer|*none*|Write a signed 32-bit integer| 82 | |WriteInt64|Section, Ident: string; Value: Int64|*none*|Write a signed 64-bit integer| 83 | |WriteUInt32|Section, Ident: string; Value: UInt32|*none*|Write an unsigned 32-bit integer| 84 | |WriteUInt64|Section, Ident: string; Value: UInt64|*none*|Write an unsigned 64-bit integer| 85 | |WriteSingle|Section, Ident: string; Value: Single|*none*|Write a 32-bit float| 86 | |WriteDouble|Section, Ident: string; Value: Double|*none*|Write a 64-bit float| 87 | |WriteCurrency|Section, Ident: string; Value: Currency|*none*|Write a currecy value| 88 | |WriteDateTime|Section, Ident: string; Value: TDateTime|*none*|Write a datetime value| 89 | |WriteBoolean|Section, Ident: string; Value: Boolean|*none*|Write a boolean value| 90 | |WriteStrings|Section, Ident: string; List: TStrings|*none*|Write a string list in the specified *List*| 91 | |WriteFont|Section, Ident: string; Font: TFont|*none*|Write font settings (name, style, size, etc) in the specified *Font*| 92 | |Rename|OldSection, OldIdent, NewSection, NewIdent: string|Boolean|Rename an identifier| 93 | |DeleteSection|Section: string|*none*|Delete the specified section| 94 | |Delete|Section, Ident: string|*none*|Delete the specified identifier| 95 | 96 | 97 | ## Requirements 98 | 99 | TDataFile was designed to be used with Delphi XE and higher. It may work with older versions but it was not tested. 100 | The included editor was created using Delphi Ryo and may not compile in older versions. 101 | 102 | ## Credits 103 | 104 | TDataFile was inspired by the original Degisy Software TDataFile. 105 | 106 | # DataFile Editor 107 | 108 | DataFile Editor is an application to create, view and modify files created with TDataFile. The editor will add a **META** section with a key **creation.date** in files created with it, but can be safely deleted once you add your own sections and values. 109 | The sections created with the editor will be presented as a tree, but the actual structure is flat, the actual section name stored is the full path shown in the upper part. The separator used when creating the tree is the slash character ("**/**"). 110 | 111 | # License 112 | The code and editor are both released under the MIT license. See the **LICENSE** file for details. 113 | -------------------------------------------------------------------------------- /FreePascal_version/README.md: -------------------------------------------------------------------------------- 1 | # TDataFile for Lazarus/Free Pascal 2 | 3 | This class works in a similar way to a standard **TIniFile** with many similar methods but more powerful for stored data in binary file. The class also supports basic xor encoding to scramble the binary file further. 4 | 5 | Built-in data types are stored with the values and can be checked before reading them. 6 | 7 | Any write operations are automatically saved to the opened file. 8 | 9 | **IMPORTANT** The files in this folder are designed for use with Lazarus/FreePascal. Due to differences in string handling, this version is **NOT** compatible with the Delphi version, as such has a different header signature. 10 | Section and value names, as well as all stored strings are encoded in UTF-8. The functions *ReadANSIString* and *WriteANSIString* are not present in this version. All other functions are identical. 11 | 12 | ## Supported data types 13 | The following types are supported by TDataFile: 14 | 15 | - Streams (any TStream descendant) 16 | - Strings (UTF-8) 17 | - String List (any TStrings descendant) 18 | - Booleans 19 | - 8-bit signed and unsigned integers 20 | - 16-bit signed and unsigned integers 21 | - 32-bit signed and unsigned integers 22 | - 64-bit signed and unsigned integers 23 | - Single and Double floats 24 | - Currency 25 | - Date Time 26 | - Font (name, style, size, etc) 27 | - Any data type (using ReadData() and WriteData()) 28 | 29 | ## Constructor 30 | The constructor creates a new instance of TDataFile. 31 | 32 | constructor Create(const FileName: string; readonly: boolean = false); 33 | 34 | Parameter **FileName** specifies the path and file name of the data file you open or create. 35 | Parameter **readonly** specifies if the file is opened as readonly. In readonly mode the write functions will not do anything. 36 | 37 | If you want to use the built-in encoding, set the **CodeKey** property after creating the class object. 38 | 39 | var df: TDataFile; 40 | df := TDataFile.Create('filename'); 41 | df.CodeKey := 'key used to encode data'; 42 | 43 | 44 | ## Available functions and procedures 45 | 46 | 47 | |Function|Parameters|Return type|Information| 48 | |--|--|--|--| 49 | |GetSectionNames|List: TStrings|*none*|Returns a list of the existing sections in the file| 50 | |GetValueNames|Section: string; List: TStrings|*none*|Returns a list of existing values in the specified section| 51 | |GetValueNamesAndTypes|Section: string; List: TStrings|*none*|Returns a list of existing values and their data types in the specified section. Use List.Names[] and List.Values[] for the data| 52 | |GetValueType|Section, Ident: string|TDFType|Returns the data type for the specified value| 53 | |GetValueTypeAsString|Section, Ident: string|string|Same as **GetValueType** but returns the data type as a string| 54 | |SectionExists|Section: string|Boolean|Check if the specified section exists| 55 | |ValueExists|Section, Ident: string|Boolean|Check if the value exists in the section| 56 | |ReadData|Section, Ident: string; pBuf: Pointer|Integer|Low level function to read any data stored to the specified pointer| 57 | |ReadStream|Section, Ident: string; Stream: TStream|Integer|Read a stream from the datafile | 58 | |ReadString|Section, Ident: string; Default: string|string|Read a unicode String from the datafile. If the identifier doesn't exist, returns the *Default* value| 59 | |ReadInt8|Section, Ident: string; Default: Int8|Int8|Read a signed 8-bit integer| 60 | |ReadInt16|Section, Ident: string; Default: Int16|Int16|Read a signed 16-bit integer| 61 | |ReadUInt8|Section, Ident: string; Default: UInt8|UInt8|Read an unsigned 8-bit integer| 62 | |ReadUInt16|Section, Ident: string; Default: UInt16|UInt16|Read an unsigned 16-bit integer| 63 | |ReadInteger, ReadInt32|Section, Ident: string; Default: Integer|Integer|Read a signed 32-bit integer| 64 | |ReadInt64|Section, Ident: string; Default: Int64|Int64|Read a signed 64-bit integer| 65 | |ReadUInt32|Section, Ident: string; Default: UInt32|UInt32|Read an unsigned 32-bit integer| 66 | |ReadUInt64|Section, Ident: string; Default: UInt64|UInt64|Read an unsigned 64-bit integer| 67 | |ReadSingle|Section, Ident: string; Default: Single|Single|Read a 32-bit float| 68 | |ReadDouble|Section, Ident: string; Default: Double|Double|Read a 64-bit float| 69 | |ReadCurrency|Section, Ident: string; Default: Currency|Currency|Read a currency value| 70 | |ReadDateTime|Section, Ident: string; Default: TDateTime|TDateTime|Read a datetime value| 71 | |ReadBoolean|Section, Ident: string; Default: Boolean|Boolean|Read a boolean value| 72 | |ReadStrings|Section, Ident: string; List: TStrings|*none*|Read a string list in the specified *List*| 73 | |ReadFont|Section, Ident: string; Font: TFont|*none*|Read font settings (name, style, size, etc) in the specified *Font*| 74 | |WriteData|Section, Ident: string; pBuf: Pointer; Count: Integer; DataType: TDFType = dfd_Unknown|Integer|Low level function to write any data stored to the specified pointer| 75 | |WriteStream|Section, Ident: string; Stream: TStream; DataType: TDFType = dfd_Stream|Integer|Write a stream from the datafile | 76 | |WriteString|Section, Ident, Value: string|*none*|Write a unicode String from the datafile. If the identifier doesn't exist, returns the *Default* value| 77 | |WriteInt8|Section, Ident: string; Value: Int8|*none*|Write a signed 8-bit integer| 78 | |WriteInt16|Section, Ident: string; Value: Int16|*none*|Write a signed 16-bit integer| 79 | |WriteUInt8|Section, Ident: string; Value: UInt8|*none*|Write an unsigned 8-bit integer| 80 | |WriteUInt16|Section, Ident: string; Value: UInt16|*none*|Write an unsigned 16-bit integer| 81 | |WriteInteger, WriteInt32|Section, Ident: string; Value: Integer|*none*|Write a signed 32-bit integer| 82 | |WriteInt64|Section, Ident: string; Value: Int64|*none*|Write a signed 64-bit integer| 83 | |WriteUInt32|Section, Ident: string; Value: UInt32|*none*|Write an unsigned 32-bit integer| 84 | |WriteUInt64|Section, Ident: string; Value: UInt64|*none*|Write an unsigned 64-bit integer| 85 | |WriteSingle|Section, Ident: string; Value: Single|*none*|Write a 32-bit float| 86 | |WriteDouble|Section, Ident: string; Value: Double|*none*|Write a 64-bit float| 87 | |WriteCurrency|Section, Ident: string; Value: Currency|*none*|Write a currecy value| 88 | |WriteDateTime|Section, Ident: string; Value: TDateTime|*none*|Write a datetime value| 89 | |WriteBoolean|Section, Ident: string; Value: Boolean|*none*|Write a boolean value| 90 | |WriteStrings|Section, Ident: string; List: TStrings|*none*|Write a string list in the specified *List*| 91 | |WriteFont|Section, Ident: string; Font: TFont|*none*|Write font settings (name, style, size, etc) in the specified *Font*| 92 | |Rename|OldSection, OldIdent, NewSection, NewIdent: string|Boolean|Rename an identifier| 93 | |DeleteSection|Section: string|*none*|Delete the specified section| 94 | |Delete|Section, Ident: string|*none*|Delete the specified identifier| 95 | 96 | 97 | ## Requirements 98 | 99 | TDataFile was designed to be used with the latest stable Lazarus version. It may work with older versions but it was not tested. 100 | 101 | ## Credits 102 | 103 | TDataFile was inspired by the original Degisy Software TDataFile. 104 | 105 | # DataFile Editor 106 | 107 | DataFile Editor is an application to create, view and modify files created with TDataFile. The editor will add a **META** section with a key **creation.date** in files created with it, but can be safely deleted once you add your own sections and values. 108 | The sections created with the editor will be presented as a tree, but the actual structure is flat, the actual section name stored is the full path shown in the upper part. The separator used when creating the tree is the slash character ("**/**"). 109 | 110 | **IMPORTANT** DataFileEditor app was not tested in linux/mac but should compile. It requires the lazarus port of [MPHexEditor](https://github.com/michalgw/mphexeditor) component. 111 | 112 | # License 113 | The code and editor are both released under the MIT license. See the **LICENSE** file for details. 114 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Demo/Demo.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{DBDBA7A0-C1FC-443D-8411-E534B44A2D78}</ProjectGuid> 4 | <ProjectVersion>14.6</ProjectVersion> 5 | <FrameworkType>VCL</FrameworkType> 6 | <MainSource>Demo.dpr</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 10 | <TargetedPlatforms>1</TargetedPlatforms> 11 | <AppType>Application</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 22 | <Cfg_1>true</Cfg_1> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 27 | <Cfg_1_Win32>true</Cfg_1_Win32> 28 | <CfgParent>Cfg_1</CfgParent> 29 | <Cfg_1>true</Cfg_1> 30 | <Base>true</Base> 31 | </PropertyGroup> 32 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 33 | <Cfg_2>true</Cfg_2> 34 | <CfgParent>Base</CfgParent> 35 | <Base>true</Base> 36 | </PropertyGroup> 37 | <PropertyGroup Condition="'$(Base)'!=''"> 38 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 39 | <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon> 40 | <DCC_UnitSearchPath>..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath> 41 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace> 42 | <Manifest_File>None</Manifest_File> 43 | <VerInfo_Locale>1031</VerInfo_Locale> 44 | <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> 45 | <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput> 46 | <DCC_E>false</DCC_E> 47 | <DCC_N>false</DCC_N> 48 | <DCC_S>false</DCC_S> 49 | <DCC_F>false</DCC_F> 50 | <DCC_K>false</DCC_K> 51 | </PropertyGroup> 52 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 53 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 54 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 55 | <DCC_UsePackage>DBXSqliteDriver;rtl;dbrtl;DbxClientDriver;IndySystem;MySQL_18;vclib;inetdbbde;DBXInterBaseDriver;DataSnapCommon;DBXOdbcDriver;VCL_Ext_18;xmlrtl;svnui;ibxpress;DbxCommonDriver;DBXSybaseASEDriver;vclimg;JamShellDelphiXE4;IndyProtocols;DBXMySQLDriver;MetropolisUILiveTile;vclactnband;soaprtl;vcldb;bindengine;vcldsnap;vclie;vcltouch;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;SynEdit_18;VclSmp;dsnap;IndyIPServer;DBXInformixDriver;IndyCore;vcl;IndyIPCommon;CloudService;DBXMSSQLDriver;DBXFirebirdDriver;MPHexEditor_18;inet;vclx;inetdbxpress;webdsnap;svn;DBXSybaseASADriver;bdertl;BCEditor_18;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage> 56 | <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File> 57 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 58 | <VerInfo_Locale>1033</VerInfo_Locale> 59 | </PropertyGroup> 60 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 61 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 62 | <DCC_DebugDCUs>true</DCC_DebugDCUs> 63 | <DCC_Optimize>false</DCC_Optimize> 64 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 65 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 66 | <DCC_RemoteDebug>true</DCC_RemoteDebug> 67 | </PropertyGroup> 68 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 69 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 70 | <VerInfo_Locale>1033</VerInfo_Locale> 71 | <DCC_RemoteDebug>false</DCC_RemoteDebug> 72 | </PropertyGroup> 73 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 74 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 75 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 76 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 77 | <DCC_DebugInformation>false</DCC_DebugInformation> 78 | </PropertyGroup> 79 | <ItemGroup> 80 | <DelphiCompile Include="$(MainSource)"> 81 | <MainSource>MainSource</MainSource> 82 | </DelphiCompile> 83 | <DCCReference Include="Main.pas"> 84 | <Form>MainForm</Form> 85 | </DCCReference> 86 | <BuildConfiguration Include="Release"> 87 | <Key>Cfg_2</Key> 88 | <CfgParent>Base</CfgParent> 89 | </BuildConfiguration> 90 | <BuildConfiguration Include="Base"> 91 | <Key>Base</Key> 92 | </BuildConfiguration> 93 | <BuildConfiguration Include="Debug"> 94 | <Key>Cfg_1</Key> 95 | <CfgParent>Base</CfgParent> 96 | </BuildConfiguration> 97 | </ItemGroup> 98 | <ProjectExtensions> 99 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 100 | <Borland.ProjectType/> 101 | <BorlandProject> 102 | <Delphi.Personality> 103 | <VersionInfo> 104 | <VersionInfo Name="IncludeVerInfo">False</VersionInfo> 105 | <VersionInfo Name="AutoIncBuild">False</VersionInfo> 106 | <VersionInfo Name="MajorVer">1</VersionInfo> 107 | <VersionInfo Name="MinorVer">0</VersionInfo> 108 | <VersionInfo Name="Release">0</VersionInfo> 109 | <VersionInfo Name="Build">0</VersionInfo> 110 | <VersionInfo Name="Debug">False</VersionInfo> 111 | <VersionInfo Name="PreRelease">False</VersionInfo> 112 | <VersionInfo Name="Special">False</VersionInfo> 113 | <VersionInfo Name="Private">False</VersionInfo> 114 | <VersionInfo Name="DLL">False</VersionInfo> 115 | <VersionInfo Name="Locale">1031</VersionInfo> 116 | <VersionInfo Name="CodePage">1252</VersionInfo> 117 | </VersionInfo> 118 | <VersionInfoKeys> 119 | <VersionInfoKeys Name="CompanyName"/> 120 | <VersionInfoKeys Name="FileDescription"/> 121 | <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> 122 | <VersionInfoKeys Name="InternalName"/> 123 | <VersionInfoKeys Name="LegalCopyright"/> 124 | <VersionInfoKeys Name="LegalTrademarks"/> 125 | <VersionInfoKeys Name="OriginalFilename"/> 126 | <VersionInfoKeys Name="ProductName"/> 127 | <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> 128 | <VersionInfoKeys Name="Comments"/> 129 | <VersionInfoKeys Name="CFBundleName"/> 130 | <VersionInfoKeys Name="CFBundleDisplayName"/> 131 | <VersionInfoKeys Name="UIDeviceFamily"/> 132 | <VersionInfoKeys Name="CFBundleIdentifier"/> 133 | <VersionInfoKeys Name="CFBundleVersion"/> 134 | <VersionInfoKeys Name="CFBundlePackageType"/> 135 | <VersionInfoKeys Name="CFBundleSignature"/> 136 | <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/> 137 | <VersionInfoKeys Name="UISupportedInterfaceOrientations"/> 138 | <VersionInfoKeys Name="CFBundleExecutable"/> 139 | <VersionInfoKeys Name="CFBundleResourceSpecification"/> 140 | <VersionInfoKeys Name="LSRequiresIPhoneOS"/> 141 | <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/> 142 | <VersionInfoKeys Name="CFBundleDevelopmentRegion"/> 143 | </VersionInfoKeys> 144 | <Source> 145 | <Source Name="MainSource">Demo.dpr</Source> 146 | </Source> 147 | </Delphi.Personality> 148 | <Deployment/> 149 | <Platforms> 150 | <Platform value="Win32">True</Platform> 151 | </Platforms> 152 | </BorlandProject> 153 | <ProjectFileVersion>12</ProjectFileVersion> 154 | </ProjectExtensions> 155 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 156 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 157 | </Project> 158 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{B2B916AD-F2C9-4DD7-B9C6-4247F5045548}</ProjectGuid> 4 | <MainSource>BCHexEditor.Package.Designtime.dpk</MainSource> 5 | <Base>True</Base> 6 | <Config Condition="'$(Config)'==''">Debug</Config> 7 | <TargetedPlatforms>1</TargetedPlatforms> 8 | <AppType>Package</AppType> 9 | <FrameworkType>None</FrameworkType> 10 | <ProjectVersion>14.6</ProjectVersion> 11 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''"> 22 | <Cfg_1>true</Cfg_1> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''"> 27 | <Cfg_2>true</Cfg_2> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''"> 32 | <Cfg_2_Win32>true</Cfg_2_Win32> 33 | <CfgParent>Cfg_2</CfgParent> 34 | <Cfg_2>true</Cfg_2> 35 | <Base>true</Base> 36 | </PropertyGroup> 37 | <PropertyGroup Condition="'$(Base)'!=''"> 38 | <DCC_UnitSearchPath>.\$(Platform)\$(Config);$(DCC_UnitSearchPath)</DCC_UnitSearchPath> 39 | <DCC_DcpOutput>.\$(Platform)\$(Config)</DCC_DcpOutput> 40 | <DesignOnlyPackage>true</DesignOnlyPackage> 41 | <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> 42 | <DCC_BplOutput>$(BDSUSERDIR)\Projects\Bpl</DCC_BplOutput> 43 | <GenDll>true</GenDll> 44 | <DCC_K>false</DCC_K> 45 | <DCC_N>false</DCC_N> 46 | <DCC_ImageBase>00400000</DCC_ImageBase> 47 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;System.Win;$(DCC_Namespace)</DCC_Namespace> 48 | <DCC_E>false</DCC_E> 49 | <DCC_Description>BCHexEditor Components</DCC_Description> 50 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;UIDeviceFamily=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;UISupportedInterfaceOrientations=;CFBundleExecutable=;CFBundleResourceSpecification=;CFBundleInfoDictionaryVersion=;CFBundleDevelopmentRegion=</VerInfo_Keys> 51 | <VerInfo_Locale>1031</VerInfo_Locale> 52 | <DCC_S>false</DCC_S> 53 | <DCC_F>false</DCC_F> 54 | <GenPackage>true</GenPackage> 55 | </PropertyGroup> 56 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 57 | <DCC_UsePackage>rtl;BCHexEditor.Package.Runtime;$(DCC_UsePackage)</DCC_UsePackage> 58 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 59 | <DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 60 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 61 | <VerInfo_Locale>1033</VerInfo_Locale> 62 | </PropertyGroup> 63 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 64 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 65 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 66 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 67 | <DCC_DebugInformation>false</DCC_DebugInformation> 68 | </PropertyGroup> 69 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 70 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 71 | <DCC_Optimize>false</DCC_Optimize> 72 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 73 | </PropertyGroup> 74 | <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''"> 75 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 76 | <VerInfo_Locale>1033</VerInfo_Locale> 77 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 78 | </PropertyGroup> 79 | <ItemGroup> 80 | <DelphiCompile Include="$(MainSource)"> 81 | <MainSource>MainSource</MainSource> 82 | </DelphiCompile> 83 | <DCCReference Include="BCHexEditor.Package.Designtime.dcr"/> 84 | <DCCReference Include="rtl.dcp"/> 85 | <DCCReference Include="designide.dcp"/> 86 | <DCCReference Include="BCHexEditor.Package.Runtime.dcp"/> 87 | <DCCReference Include="BCHexEditor.Package.Designtime.pas"/> 88 | <BuildConfiguration Include="Debug"> 89 | <Key>Cfg_2</Key> 90 | <CfgParent>Base</CfgParent> 91 | </BuildConfiguration> 92 | <BuildConfiguration Include="Base"> 93 | <Key>Base</Key> 94 | </BuildConfiguration> 95 | <BuildConfiguration Include="Release"> 96 | <Key>Cfg_1</Key> 97 | <CfgParent>Base</CfgParent> 98 | </BuildConfiguration> 99 | </ItemGroup> 100 | <ProjectExtensions> 101 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 102 | <Borland.ProjectType>Package</Borland.ProjectType> 103 | <BorlandProject> 104 | <Delphi.Personality> 105 | <Source> 106 | <Source Name="MainSource">BCHexEditor.Package.Designtime.dpk</Source> 107 | </Source> 108 | <VersionInfo> 109 | <VersionInfo Name="IncludeVerInfo">True</VersionInfo> 110 | <VersionInfo Name="AutoIncBuild">False</VersionInfo> 111 | <VersionInfo Name="MajorVer">1</VersionInfo> 112 | <VersionInfo Name="MinorVer">0</VersionInfo> 113 | <VersionInfo Name="Release">0</VersionInfo> 114 | <VersionInfo Name="Build">0</VersionInfo> 115 | <VersionInfo Name="Debug">False</VersionInfo> 116 | <VersionInfo Name="PreRelease">False</VersionInfo> 117 | <VersionInfo Name="Special">False</VersionInfo> 118 | <VersionInfo Name="Private">False</VersionInfo> 119 | <VersionInfo Name="DLL">False</VersionInfo> 120 | <VersionInfo Name="Locale">1031</VersionInfo> 121 | <VersionInfo Name="CodePage">1252</VersionInfo> 122 | </VersionInfo> 123 | <VersionInfoKeys> 124 | <VersionInfoKeys Name="CompanyName"/> 125 | <VersionInfoKeys Name="FileDescription"/> 126 | <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> 127 | <VersionInfoKeys Name="InternalName"/> 128 | <VersionInfoKeys Name="LegalCopyright"/> 129 | <VersionInfoKeys Name="LegalTrademarks"/> 130 | <VersionInfoKeys Name="OriginalFilename"/> 131 | <VersionInfoKeys Name="ProductName"/> 132 | <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> 133 | <VersionInfoKeys Name="Comments"/> 134 | <VersionInfoKeys Name="CFBundleName"/> 135 | <VersionInfoKeys Name="CFBundleDisplayName"/> 136 | <VersionInfoKeys Name="UIDeviceFamily"/> 137 | <VersionInfoKeys Name="CFBundleIdentifier"/> 138 | <VersionInfoKeys Name="CFBundleVersion"/> 139 | <VersionInfoKeys Name="CFBundlePackageType"/> 140 | <VersionInfoKeys Name="CFBundleSignature"/> 141 | <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/> 142 | <VersionInfoKeys Name="UISupportedInterfaceOrientations"/> 143 | <VersionInfoKeys Name="CFBundleExecutable"/> 144 | <VersionInfoKeys Name="CFBundleResourceSpecification"/> 145 | <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/> 146 | <VersionInfoKeys Name="CFBundleDevelopmentRegion"/> 147 | </VersionInfoKeys> 148 | </Delphi.Personality> 149 | <Platforms> 150 | <Platform value="Win32">True</Platform> 151 | </Platforms> 152 | </BorlandProject> 153 | <ProjectFileVersion>12</ProjectFileVersion> 154 | </ProjectExtensions> 155 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 156 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 157 | </Project> 158 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Runtime.dproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{431D8CD4-505D-4BCE-8A6C-7F89B334498A}</ProjectGuid> 4 | <MainSource>BCHexEditor.Package.Runtime.dpk</MainSource> 5 | <Base>True</Base> 6 | <Config Condition="'$(Config)'==''">Debug</Config> 7 | <TargetedPlatforms>3</TargetedPlatforms> 8 | <AppType>Package</AppType> 9 | <FrameworkType>None</FrameworkType> 10 | <ProjectVersion>14.6</ProjectVersion> 11 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''"> 22 | <Base_Win64>true</Base_Win64> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''"> 27 | <Cfg_1>true</Cfg_1> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 32 | <Cfg_1_Win32>true</Cfg_1_Win32> 33 | <CfgParent>Cfg_1</CfgParent> 34 | <Cfg_1>true</Cfg_1> 35 | <Base>true</Base> 36 | </PropertyGroup> 37 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''"> 38 | <Cfg_2>true</Cfg_2> 39 | <CfgParent>Base</CfgParent> 40 | <Base>true</Base> 41 | </PropertyGroup> 42 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''"> 43 | <Cfg_2_Win32>true</Cfg_2_Win32> 44 | <CfgParent>Cfg_2</CfgParent> 45 | <Cfg_2>true</Cfg_2> 46 | <Base>true</Base> 47 | </PropertyGroup> 48 | <PropertyGroup Condition="'$(Base)'!=''"> 49 | <DCC_DcpOutput>.\$(Platform)\$(Config)</DCC_DcpOutput> 50 | <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput> 51 | <DCC_BplOutput>$(BDSUSERDIR)\Projects\Bpl</DCC_BplOutput> 52 | <GenDll>true</GenDll> 53 | <DCC_K>false</DCC_K> 54 | <DCC_N>false</DCC_N> 55 | <DCC_ImageBase>00400000</DCC_ImageBase> 56 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;System.Win;$(DCC_Namespace)</DCC_Namespace> 57 | <DCC_E>false</DCC_E> 58 | <DCC_Description>BCHexEditor Components</DCC_Description> 59 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;UIDeviceFamily=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;UISupportedInterfaceOrientations=;CFBundleExecutable=;CFBundleResourceSpecification=;LSRequiresIPhoneOS=;CFBundleInfoDictionaryVersion=;CFBundleDevelopmentRegion=</VerInfo_Keys> 60 | <VerInfo_Locale>1031</VerInfo_Locale> 61 | <DCC_S>false</DCC_S> 62 | <DCC_F>false</DCC_F> 63 | <GenPackage>true</GenPackage> 64 | </PropertyGroup> 65 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 66 | <DCC_UsePackage>rtl;vcl;$(DCC_UsePackage)</DCC_UsePackage> 67 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 68 | <DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 69 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 70 | <VerInfo_Locale>1033</VerInfo_Locale> 71 | </PropertyGroup> 72 | <PropertyGroup Condition="'$(Base_Win64)'!=''"> 73 | <DCC_UsePackage>vcl;$(DCC_UsePackage)</DCC_UsePackage> 74 | <VerInfo_Locale>1033</VerInfo_Locale> 75 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 76 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 77 | <DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace> 78 | </PropertyGroup> 79 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 80 | <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> 81 | <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> 82 | <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define> 83 | <DCC_DebugInformation>false</DCC_DebugInformation> 84 | </PropertyGroup> 85 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 86 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 87 | <VerInfo_Locale>1033</VerInfo_Locale> 88 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 89 | </PropertyGroup> 90 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 91 | <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames> 92 | <DCC_Optimize>false</DCC_Optimize> 93 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> 94 | </PropertyGroup> 95 | <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''"> 96 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 97 | <VerInfo_Locale>1033</VerInfo_Locale> 98 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 99 | </PropertyGroup> 100 | <ItemGroup> 101 | <DelphiCompile Include="$(MainSource)"> 102 | <MainSource>MainSource</MainSource> 103 | </DelphiCompile> 104 | <DCCReference Include="rtl.dcp"/> 105 | <DCCReference Include="vcl.dcp"/> 106 | <DCCReference Include="..\Source\BCHexEditor.pas"/> 107 | <DCCReference Include="..\Source\BCHexEditorEx.pas"/> 108 | <BuildConfiguration Include="Debug"> 109 | <Key>Cfg_2</Key> 110 | <CfgParent>Base</CfgParent> 111 | </BuildConfiguration> 112 | <BuildConfiguration Include="Base"> 113 | <Key>Base</Key> 114 | </BuildConfiguration> 115 | <BuildConfiguration Include="Release"> 116 | <Key>Cfg_1</Key> 117 | <CfgParent>Base</CfgParent> 118 | </BuildConfiguration> 119 | </ItemGroup> 120 | <ProjectExtensions> 121 | <Borland.Personality>Delphi.Personality.12</Borland.Personality> 122 | <Borland.ProjectType>Package</Borland.ProjectType> 123 | <BorlandProject> 124 | <Delphi.Personality> 125 | <Source> 126 | <Source Name="MainSource">BCHexEditor.Package.Runtime.dpk</Source> 127 | </Source> 128 | <VersionInfo> 129 | <VersionInfo Name="IncludeVerInfo">True</VersionInfo> 130 | <VersionInfo Name="AutoIncBuild">False</VersionInfo> 131 | <VersionInfo Name="MajorVer">1</VersionInfo> 132 | <VersionInfo Name="MinorVer">0</VersionInfo> 133 | <VersionInfo Name="Release">0</VersionInfo> 134 | <VersionInfo Name="Build">0</VersionInfo> 135 | <VersionInfo Name="Debug">False</VersionInfo> 136 | <VersionInfo Name="PreRelease">False</VersionInfo> 137 | <VersionInfo Name="Special">False</VersionInfo> 138 | <VersionInfo Name="Private">False</VersionInfo> 139 | <VersionInfo Name="DLL">False</VersionInfo> 140 | <VersionInfo Name="Locale">1031</VersionInfo> 141 | <VersionInfo Name="CodePage">1252</VersionInfo> 142 | </VersionInfo> 143 | <VersionInfoKeys> 144 | <VersionInfoKeys Name="CompanyName"/> 145 | <VersionInfoKeys Name="FileDescription"/> 146 | <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> 147 | <VersionInfoKeys Name="InternalName"/> 148 | <VersionInfoKeys Name="LegalCopyright"/> 149 | <VersionInfoKeys Name="LegalTrademarks"/> 150 | <VersionInfoKeys Name="OriginalFilename"/> 151 | <VersionInfoKeys Name="ProductName"/> 152 | <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> 153 | <VersionInfoKeys Name="Comments"/> 154 | <VersionInfoKeys Name="CFBundleName"/> 155 | <VersionInfoKeys Name="CFBundleDisplayName"/> 156 | <VersionInfoKeys Name="UIDeviceFamily"/> 157 | <VersionInfoKeys Name="CFBundleIdentifier"/> 158 | <VersionInfoKeys Name="CFBundleVersion"/> 159 | <VersionInfoKeys Name="CFBundlePackageType"/> 160 | <VersionInfoKeys Name="CFBundleSignature"/> 161 | <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/> 162 | <VersionInfoKeys Name="UISupportedInterfaceOrientations"/> 163 | <VersionInfoKeys Name="CFBundleExecutable"/> 164 | <VersionInfoKeys Name="CFBundleResourceSpecification"/> 165 | <VersionInfoKeys Name="LSRequiresIPhoneOS"/> 166 | <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/> 167 | <VersionInfoKeys Name="CFBundleDevelopmentRegion"/> 168 | </VersionInfoKeys> 169 | </Delphi.Personality> 170 | <Platforms> 171 | <Platform value="Win32">True</Platform> 172 | <Platform value="Win64">True</Platform> 173 | </Platforms> 174 | </BorlandProject> 175 | <ProjectFileVersion>12</ProjectFileVersion> 176 | </ProjectExtensions> 177 | <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> 178 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 179 | </Project> 180 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Designtime.cbproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{D8720B0E-8291-4D2A-9683-8226FB9BFAF7}</ProjectGuid> 4 | <ProjectVersion>14.6</ProjectVersion> 5 | <FrameworkType>None</FrameworkType> 6 | <MainSource>BCHexEditor.Package.Designtime.cpp</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 10 | <TargetedPlatforms>1</TargetedPlatforms> 11 | <AppType>Package</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 22 | <Cfg_1>true</Cfg_1> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 27 | <Cfg_2>true</Cfg_2> 28 | <CfgParent>Base</CfgParent> 29 | <Base>true</Base> 30 | </PropertyGroup> 31 | <PropertyGroup Condition="'$(Base)'!=''"> 32 | <ProjectType>CppPackage</ProjectType> 33 | <IncludePath>..\..\BCHexEditor\Packages\;$(IncludePath)</IncludePath> 34 | <_TCHARMapping>char</_TCHARMapping> 35 | <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace> 36 | <ILINK_GenerateLibFile>true</ILINK_GenerateLibFile> 37 | <ILINK_LibraryPath>..\..\BCHexEditor\Packages\;$(ILINK_LibraryPath)</ILINK_LibraryPath> 38 | <Multithreaded>true</Multithreaded> 39 | <ILINK_GenerateImportLibrary>true</ILINK_GenerateImportLibrary> 40 | <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput> 41 | <DynamicRTL>true</DynamicRTL> 42 | <UsePackages>true</UsePackages> 43 | <IntermediateOutputDir>.\$(Platform)\$(Config)</IntermediateOutputDir> 44 | <BCC_wpar>false</BCC_wpar> 45 | <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed> 46 | <BCC_ExtendedErrorInfo>true</BCC_ExtendedErrorInfo> 47 | <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\release\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath> 48 | </PropertyGroup> 49 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 50 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 51 | <PackageImports>adortl;bcbie;bcbsmp;bdertl;bindcomp;bindcompdbx;bindcompfmx;bindcompvcl;bindengine;CloudService;CustomIPTransport;DataSnapClient;DataSnapCommon;DataSnapConnectors;DatasnapConnectorsFreePascal;DataSnapIndy10ServerTransport;DataSnapProviderClient;DataSnapServer;dbexpress;dbrtl;dbxcds;DbxClientDriver;DbxCommonDriver;DBXDb2Driver;DBXFirebirdDriver;DBXInformixDriver;DBXInterBaseDriver;DBXMSSQLDriver;DBXMySQLDriver;DBXOdbcDriver;DBXOracleDriver;DBXSqliteDriver;DBXSybaseASADriver;DBXSybaseASEDriver;dsnap;dsnapcon;ibxpress;IndyCore;IndyIPClient;IndyIPCommon;IndyIPServer;IndyProtocols;IndySystem;inet;inetdb;inetdbbde;inetdbxpress;JamShellDelphiXE4;MetropolisUILiveTile;rtl;soaprtl;svn;vcl;vclactnband;vcldb;vcldbx;vcldsnap;vclib;vclie;vclimg;VclSmp;vcltouch;vclx;webdsnap;xmlrtl;$(PackageImports)</PackageImports> 52 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 53 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 54 | <VerInfo_Locale>1033</VerInfo_Locale> 55 | </PropertyGroup> 56 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 57 | <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed> 58 | <BCC_DisableOptimizations>true</BCC_DisableOptimizations> 59 | <DCC_Optimize>false</DCC_Optimize> 60 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 61 | <Defines>_DEBUG;$(Defines)</Defines> 62 | <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion> 63 | <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables> 64 | <DCC_Define>DEBUG</DCC_Define> 65 | <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers> 66 | <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines> 67 | <BCC_StackFrames>true</BCC_StackFrames> 68 | <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo> 69 | <TASM_Debugging>Full</TASM_Debugging> 70 | <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn> 71 | <BCC_EnableCPPExceptions>true</BCC_EnableCPPExceptions> 72 | <BCC_DisableFramePtrElimOpt>true</BCC_DisableFramePtrElimOpt> 73 | <BCC_DisableSpellChecking>true</BCC_DisableSpellChecking> 74 | <CLANG_UnwindTables>true</CLANG_UnwindTables> 75 | <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath> 76 | <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\debug\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath> 77 | </PropertyGroup> 78 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 79 | <Defines>NDEBUG;$(Defines)</Defines> 80 | <TASM_Debugging>None</TASM_Debugging> 81 | </PropertyGroup> 82 | <ItemGroup> 83 | <PackageImport Include="BCHexEditor.Package.bpi"> 84 | <ModuleName>BCHexEditor.Package.Runtime</ModuleName> 85 | <BuildOrder>8</BuildOrder> 86 | </PackageImport> 87 | <PackageImport Include="BCHexEditor.Package.bpi"> 88 | <BuildOrder>7</BuildOrder> 89 | </PackageImport> 90 | <CppCompile Include="BCHexEditor.Package.Designtime.cpp"> 91 | <BuildOrder>0</BuildOrder> 92 | </CppCompile> 93 | <PackageImport Include="designide.bpi"> 94 | <BuildOrder>2</BuildOrder> 95 | </PackageImport> 96 | <PackageImport Include="rtl.bpi"> 97 | <BuildOrder>1</BuildOrder> 98 | </PackageImport> 99 | <PackageImport Include="vcl.bpi"> 100 | <BuildOrder>6</BuildOrder> 101 | </PackageImport> 102 | <PackageImport Include="vclactnband.bpi"> 103 | <BuildOrder>4</BuildOrder> 104 | </PackageImport> 105 | <PackageImport Include="vclx.bpi"> 106 | <BuildOrder>5</BuildOrder> 107 | </PackageImport> 108 | <PackageImport Include="xmlrtl.bpi"> 109 | <BuildOrder>3</BuildOrder> 110 | </PackageImport> 111 | <BuildConfiguration Include="Release"> 112 | <Key>Cfg_2</Key> 113 | <CfgParent>Base</CfgParent> 114 | </BuildConfiguration> 115 | <BuildConfiguration Include="Base"> 116 | <Key>Base</Key> 117 | </BuildConfiguration> 118 | <BuildConfiguration Include="Debug"> 119 | <Key>Cfg_1</Key> 120 | <CfgParent>Base</CfgParent> 121 | </BuildConfiguration> 122 | </ItemGroup> 123 | <ProjectExtensions> 124 | <Borland.Personality>CPlusPlusBuilder.Personality.12</Borland.Personality> 125 | <Borland.ProjectType>CppPackage</Borland.ProjectType> 126 | <BorlandProject> 127 | <CPlusPlusBuilder.Personality> 128 | <Source> 129 | <Source Name="MainSource">BCHexEditor.Package.Designtime.cpp</Source> 130 | </Source> 131 | <VersionInfo> 132 | <VersionInfo Name="IncludeVerInfo">False</VersionInfo> 133 | <VersionInfo Name="AutoIncBuild">False</VersionInfo> 134 | <VersionInfo Name="MajorVer">1</VersionInfo> 135 | <VersionInfo Name="MinorVer">0</VersionInfo> 136 | <VersionInfo Name="Release">0</VersionInfo> 137 | <VersionInfo Name="Build">0</VersionInfo> 138 | <VersionInfo Name="Debug">False</VersionInfo> 139 | <VersionInfo Name="PreRelease">False</VersionInfo> 140 | <VersionInfo Name="Special">False</VersionInfo> 141 | <VersionInfo Name="Private">False</VersionInfo> 142 | <VersionInfo Name="DLL">False</VersionInfo> 143 | <VersionInfo Name="Locale">1031</VersionInfo> 144 | <VersionInfo Name="CodePage">1252</VersionInfo> 145 | </VersionInfo> 146 | <VersionInfoKeys> 147 | <VersionInfoKeys Name="CompanyName"/> 148 | <VersionInfoKeys Name="FileDescription"/> 149 | <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> 150 | <VersionInfoKeys Name="InternalName"/> 151 | <VersionInfoKeys Name="LegalCopyright"/> 152 | <VersionInfoKeys Name="LegalTrademarks"/> 153 | <VersionInfoKeys Name="OriginalFilename"/> 154 | <VersionInfoKeys Name="ProductName"/> 155 | <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> 156 | <VersionInfoKeys Name="Comments"/> 157 | <VersionInfoKeys Name="CFBundleName"/> 158 | <VersionInfoKeys Name="CFBundleDisplayName"/> 159 | <VersionInfoKeys Name="UIDeviceFamily"/> 160 | <VersionInfoKeys Name="CFBundleIdentifier"/> 161 | <VersionInfoKeys Name="CFBundleVersion"/> 162 | <VersionInfoKeys Name="CFBundlePackageType"/> 163 | <VersionInfoKeys Name="CFBundleSignature"/> 164 | <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/> 165 | <VersionInfoKeys Name="UISupportedInterfaceOrientations"/> 166 | <VersionInfoKeys Name="CFBundleExecutable"/> 167 | <VersionInfoKeys Name="CFBundleResourceSpecification"/> 168 | <VersionInfoKeys Name="LSRequiresIPhoneOS"/> 169 | <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/> 170 | <VersionInfoKeys Name="CFBundleDevelopmentRegion"/> 171 | </VersionInfoKeys> 172 | <ProjectProperties> 173 | <ProjectProperties Name="AutoShowDeps">False</ProjectProperties> 174 | <ProjectProperties Name="ManagePaths">True</ProjectProperties> 175 | <ProjectProperties Name="VerifyPackages">True</ProjectProperties> 176 | </ProjectProperties> 177 | </CPlusPlusBuilder.Personality> 178 | <Deployment/> 179 | <Platforms> 180 | <Platform value="Win32">True</Platform> 181 | </Platforms> 182 | </BorlandProject> 183 | <ProjectFileVersion>12</ProjectFileVersion> 184 | </ProjectExtensions> 185 | <Import Project="$(BDS)\Bin\CodeGear.Cpp.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Cpp.Targets')"/> 186 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 187 | </Project> 188 | -------------------------------------------------------------------------------- /DataFileEditor/lib/BCHexEditor-main/Packages/BCHexEditor.Package.Runtime.cbproj: -------------------------------------------------------------------------------- 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 2 | <PropertyGroup> 3 | <ProjectGuid>{73BD0606-8309-4C4B-923F-4BF09BE19304}</ProjectGuid> 4 | <ProjectVersion>14.6</ProjectVersion> 5 | <FrameworkType>None</FrameworkType> 6 | <MainSource>BCHexEditor.Package.Runtime.cpp</MainSource> 7 | <Base>True</Base> 8 | <Config Condition="'$(Config)'==''">Debug</Config> 9 | <Platform Condition="'$(Platform)'==''">Win32</Platform> 10 | <TargetedPlatforms>1</TargetedPlatforms> 11 | <AppType>Package</AppType> 12 | </PropertyGroup> 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> 14 | <Base>true</Base> 15 | </PropertyGroup> 16 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''"> 17 | <Base_Win32>true</Base_Win32> 18 | <CfgParent>Base</CfgParent> 19 | <Base>true</Base> 20 | </PropertyGroup> 21 | <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''"> 22 | <Cfg_1>true</Cfg_1> 23 | <CfgParent>Base</CfgParent> 24 | <Base>true</Base> 25 | </PropertyGroup> 26 | <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''"> 27 | <Cfg_1_Win32>true</Cfg_1_Win32> 28 | <CfgParent>Cfg_1</CfgParent> 29 | <Cfg_1>true</Cfg_1> 30 | <Base>true</Base> 31 | </PropertyGroup> 32 | <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''"> 33 | <Cfg_2>true</Cfg_2> 34 | <CfgParent>Base</CfgParent> 35 | <Base>true</Base> 36 | </PropertyGroup> 37 | <PropertyGroup Condition="'$(Base)'!=''"> 38 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 39 | <VerInfo_Locale>1031</VerInfo_Locale> 40 | <ProjectType>CppPackage</ProjectType> 41 | <IncludePath>..\Source\;..\..\BCHexEditor\Packages\;$(IncludePath)</IncludePath> 42 | <_TCHARMapping>char</_TCHARMapping> 43 | <DCC_Namespace>System;Vcl;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace> 44 | <ILINK_GenerateLibFile>true</ILINK_GenerateLibFile> 45 | <ILINK_LibraryPath>..\Source\;..\..\BCHexEditor\Packages\;$(ILINK_LibraryPath)</ILINK_LibraryPath> 46 | <Multithreaded>true</Multithreaded> 47 | <ILINK_GenerateImportLibrary>true</ILINK_GenerateImportLibrary> 48 | <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput> 49 | <DynamicRTL>true</DynamicRTL> 50 | <UsePackages>true</UsePackages> 51 | <IntermediateOutputDir>.\$(Platform)\$(Config)</IntermediateOutputDir> 52 | <BCC_wpar>false</BCC_wpar> 53 | <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed> 54 | <BCC_ExtendedErrorInfo>true</BCC_ExtendedErrorInfo> 55 | <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\release\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath> 56 | </PropertyGroup> 57 | <PropertyGroup Condition="'$(Base_Win32)'!=''"> 58 | <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace> 59 | <PackageImports>adortl;bcbie;bcbsmp;bdertl;bindcomp;bindcompdbx;bindcompfmx;bindcompvcl;bindengine;CloudService;CustomIPTransport;DataSnapClient;DataSnapCommon;DataSnapConnectors;DatasnapConnectorsFreePascal;DataSnapIndy10ServerTransport;DataSnapProviderClient;DataSnapServer;dbexpress;dbrtl;dbxcds;DbxClientDriver;DbxCommonDriver;DBXDb2Driver;DBXFirebirdDriver;DBXInformixDriver;DBXInterBaseDriver;DBXMSSQLDriver;DBXMySQLDriver;DBXOdbcDriver;DBXOracleDriver;DBXSqliteDriver;DBXSybaseASADriver;DBXSybaseASEDriver;dsnap;dsnapcon;ibxpress;IndyCore;IndyIPClient;IndyIPCommon;IndyIPServer;IndyProtocols;IndySystem;inet;inetdb;inetdbbde;inetdbxpress;JamShellDelphiXE4;MetropolisUILiveTile;rtl;soaprtl;svn;vcl;vclactnband;vcldb;vcldbx;vcldsnap;vclib;vclie;vclimg;VclSmp;vcltouch;vclx;webdsnap;xmlrtl;$(PackageImports)</PackageImports> 60 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 61 | <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> 62 | <VerInfo_Locale>1033</VerInfo_Locale> 63 | </PropertyGroup> 64 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> 65 | <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed> 66 | <BCC_DisableOptimizations>true</BCC_DisableOptimizations> 67 | <DCC_Optimize>false</DCC_Optimize> 68 | <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe> 69 | <Defines>_DEBUG;$(Defines)</Defines> 70 | <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion> 71 | <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables> 72 | <DCC_Define>DEBUG</DCC_Define> 73 | <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers> 74 | <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines> 75 | <BCC_StackFrames>true</BCC_StackFrames> 76 | <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo> 77 | <TASM_Debugging>Full</TASM_Debugging> 78 | <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn> 79 | <BCC_EnableCPPExceptions>true</BCC_EnableCPPExceptions> 80 | <BCC_DisableFramePtrElimOpt>true</BCC_DisableFramePtrElimOpt> 81 | <BCC_DisableSpellChecking>true</BCC_DisableSpellChecking> 82 | <CLANG_UnwindTables>true</CLANG_UnwindTables> 83 | <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath> 84 | <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\debug\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath> 85 | </PropertyGroup> 86 | <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''"> 87 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> 88 | <VerInfo_Locale>1033</VerInfo_Locale> 89 | </PropertyGroup> 90 | <PropertyGroup Condition="'$(Cfg_2)'!=''"> 91 | <Defines>NDEBUG;$(Defines)</Defines> 92 | <TASM_Debugging>None</TASM_Debugging> 93 | </PropertyGroup> 94 | <ItemGroup> 95 | <CppCompile Include="BCHexEditor.Package.Runtime.cpp"> 96 | <BuildOrder>0</BuildOrder> 97 | </CppCompile> 98 | <PackageImport Include="rtl.bpi"> 99 | <BuildOrder>1</BuildOrder> 100 | </PackageImport> 101 | <DelphiCompile Include="..\Source\BCHexEditor.pas"> 102 | <BuildOrder>2</BuildOrder> 103 | </DelphiCompile> 104 | <DelphiCompile Include="..\Source\BCHexEditorEx.pas"> 105 | <BuildOrder>3</BuildOrder> 106 | </DelphiCompile> 107 | <PackageImport Include="designide.bpi"> 108 | <BuildOrder>4</BuildOrder> 109 | </PackageImport> 110 | <PackageImport Include="vcl.bpi"> 111 | <BuildOrder>8</BuildOrder> 112 | </PackageImport> 113 | <PackageImport Include="vclactnband.bpi"> 114 | <BuildOrder>6</BuildOrder> 115 | </PackageImport> 116 | <PackageImport Include="vclx.bpi"> 117 | <BuildOrder>7</BuildOrder> 118 | </PackageImport> 119 | <PackageImport Include="xmlrtl.bpi"> 120 | <BuildOrder>5</BuildOrder> 121 | </PackageImport> 122 | <BuildConfiguration Include="Release"> 123 | <Key>Cfg_2</Key> 124 | <CfgParent>Base</CfgParent> 125 | </BuildConfiguration> 126 | <BuildConfiguration Include="Base"> 127 | <Key>Base</Key> 128 | </BuildConfiguration> 129 | <BuildConfiguration Include="Debug"> 130 | <Key>Cfg_1</Key> 131 | <CfgParent>Base</CfgParent> 132 | </BuildConfiguration> 133 | </ItemGroup> 134 | <ProjectExtensions> 135 | <Borland.Personality>CPlusPlusBuilder.Personality.12</Borland.Personality> 136 | <Borland.ProjectType>CppPackage</Borland.ProjectType> 137 | <BorlandProject> 138 | <CPlusPlusBuilder.Personality> 139 | <Source> 140 | <Source Name="MainSource">BCHexEditor.Package.Runtime.cpp</Source> 141 | </Source> 142 | <VersionInfo> 143 | <VersionInfo Name="IncludeVerInfo">False</VersionInfo> 144 | <VersionInfo Name="AutoIncBuild">False</VersionInfo> 145 | <VersionInfo Name="MajorVer">1</VersionInfo> 146 | <VersionInfo Name="MinorVer">0</VersionInfo> 147 | <VersionInfo Name="Release">0</VersionInfo> 148 | <VersionInfo Name="Build">0</VersionInfo> 149 | <VersionInfo Name="Debug">False</VersionInfo> 150 | <VersionInfo Name="PreRelease">False</VersionInfo> 151 | <VersionInfo Name="Special">False</VersionInfo> 152 | <VersionInfo Name="Private">False</VersionInfo> 153 | <VersionInfo Name="DLL">False</VersionInfo> 154 | <VersionInfo Name="Locale">1031</VersionInfo> 155 | <VersionInfo Name="CodePage">1252</VersionInfo> 156 | </VersionInfo> 157 | <VersionInfoKeys> 158 | <VersionInfoKeys Name="CompanyName"/> 159 | <VersionInfoKeys Name="FileDescription"/> 160 | <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys> 161 | <VersionInfoKeys Name="InternalName"/> 162 | <VersionInfoKeys Name="LegalCopyright"/> 163 | <VersionInfoKeys Name="LegalTrademarks"/> 164 | <VersionInfoKeys Name="OriginalFilename"/> 165 | <VersionInfoKeys Name="ProductName"/> 166 | <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys> 167 | <VersionInfoKeys Name="Comments"/> 168 | <VersionInfoKeys Name="CFBundleName"/> 169 | <VersionInfoKeys Name="CFBundleDisplayName"/> 170 | <VersionInfoKeys Name="UIDeviceFamily"/> 171 | <VersionInfoKeys Name="CFBundleIdentifier"/> 172 | <VersionInfoKeys Name="CFBundleVersion"/> 173 | <VersionInfoKeys Name="CFBundlePackageType"/> 174 | <VersionInfoKeys Name="CFBundleSignature"/> 175 | <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/> 176 | <VersionInfoKeys Name="UISupportedInterfaceOrientations"/> 177 | <VersionInfoKeys Name="CFBundleExecutable"/> 178 | <VersionInfoKeys Name="CFBundleResourceSpecification"/> 179 | <VersionInfoKeys Name="LSRequiresIPhoneOS"/> 180 | <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/> 181 | <VersionInfoKeys Name="CFBundleDevelopmentRegion"/> 182 | </VersionInfoKeys> 183 | <ProjectProperties> 184 | <ProjectProperties Name="AutoShowDeps">False</ProjectProperties> 185 | <ProjectProperties Name="ManagePaths">True</ProjectProperties> 186 | <ProjectProperties Name="VerifyPackages">True</ProjectProperties> 187 | </ProjectProperties> 188 | <Excluded_Packages> 189 | <Excluded_Packages Name="$(BDSBIN)\bcboffice2k180.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages> 190 | <Excluded_Packages Name="$(BDSBIN)\bcbofficexp180.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages> 191 | <Excluded_Packages Name="$(BDSBIN)\dcloffice2k180.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages> 192 | <Excluded_Packages Name="$(BDSBIN)\dclofficexp180.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages> 193 | </Excluded_Packages> 194 | </CPlusPlusBuilder.Personality> 195 | <Deployment/> 196 | <Platforms> 197 | <Platform value="Win32">True</Platform> 198 | </Platforms> 199 | </BorlandProject> 200 | <ProjectFileVersion>12</ProjectFileVersion> 201 | </ProjectExtensions> 202 | <Import Project="$(BDS)\Bin\CodeGear.Cpp.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Cpp.Targets')"/> 203 | <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/> 204 | </Project> 205 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uEditValue.pas: -------------------------------------------------------------------------------- 1 | unit uEditValue; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, 9 | ExtCtrls, MPHexEditor, DateTimePicker; 10 | 11 | type 12 | 13 | { TfrmEdit } 14 | 15 | TfrmEdit = class(TForm) 16 | hex: TMPHexEditor; 17 | pages: TPageControl; 18 | page_String: TTabSheet; 19 | Panel1: TPanel; 20 | btn_Save: TButton; 21 | Button2: TButton; 22 | edit_String: TMemo; 23 | page_Integer: TTabSheet; 24 | edit_Integer: TEdit; 25 | Label1: TLabel; 26 | Label2: TLabel; 27 | edit_Integer_Hex: TEdit; 28 | lbl_Integer_outside_range: TLabel; 29 | page_Stream: TTabSheet; 30 | Panel2: TPanel; 31 | edit_ValuePath: TEdit; 32 | page_Int64: TTabSheet; 33 | Label3: TLabel; 34 | edit_Int64: TEdit; 35 | lbl_Int64_outside_range: TLabel; 36 | Label5: TLabel; 37 | edit_Int64_Hex: TEdit; 38 | edit_ValueName: TEdit; 39 | Label6: TLabel; 40 | Label7: TLabel; 41 | Label8: TLabel; 42 | edit_int32_type: TEdit; 43 | edit_int64_type: TEdit; 44 | Label9: TLabel; 45 | Panel3: TPanel; 46 | chk_hex_AllowInsert: TCheckBox; 47 | page_Float: TTabSheet; 48 | Label4: TLabel; 49 | edit_float_type: TEdit; 50 | Label10: TLabel; 51 | edit_float: TEdit; 52 | page_Calendar: TTabSheet; 53 | calendar_time: TDateTimePicker; 54 | Label13: TLabel; 55 | Label15: TLabel; 56 | calendar_date: TDateTimePicker; 57 | Button1: TButton; 58 | Button3: TButton; 59 | OpenDialog1: TOpenDialog; 60 | SaveDialog1: TSaveDialog; 61 | page_Int8: TTabSheet; 62 | edit_Int8: TEdit; 63 | edit_Int8_Hex: TEdit; 64 | Label11: TLabel; 65 | lbl_Int8_outside_range: TLabel; 66 | Label14: TLabel; 67 | edit_int8_type: TEdit; 68 | Label16: TLabel; 69 | page_Int16: TTabSheet; 70 | Label12: TLabel; 71 | edit_int16_type: TEdit; 72 | Label17: TLabel; 73 | edit_Int16: TEdit; 74 | lbl_Int16_outside_range: TLabel; 75 | Label19: TLabel; 76 | edit_Int16_Hex: TEdit; 77 | procedure edit_IntegerKeyUp(Sender: TObject; var Key: Word; 78 | Shift: TShiftState); 79 | procedure edit_Integer_HexKeyUp(Sender: TObject; var Key: Word; 80 | Shift: TShiftState); 81 | procedure FormCreate(Sender: TObject); 82 | procedure FormClose(Sender: TObject); 83 | procedure FormShow(Sender: TObject); 84 | procedure edit_Int64KeyUp(Sender: TObject; var Key: Word; 85 | Shift: TShiftState); 86 | procedure edit_Int64_HexKeyUp(Sender: TObject; var Key: Word; 87 | Shift: TShiftState); 88 | procedure chk_hex_AllowInsertClick(Sender: TObject); 89 | procedure calendar_dateChange(Sender: TObject); 90 | procedure Button1Click(Sender: TObject); 91 | procedure Button3Click(Sender: TObject); 92 | procedure edit_Int8KeyUp(Sender: TObject; var Key: Word; 93 | Shift: TShiftState); 94 | procedure edit_Int8_HexKeyUp(Sender: TObject; var Key: Word; 95 | Shift: TShiftState); 96 | procedure edit_Int16KeyUp(Sender: TObject; var Key: Word; 97 | Shift: TShiftState); 98 | procedure edit_Int16_HexKeyUp(Sender: TObject; var Key: Word; 99 | Shift: TShiftState); 100 | procedure pagesChange(Sender: TObject); 101 | private 102 | { Private declarations } 103 | hex_active: boolean; 104 | public 105 | { Public declarations } 106 | // hex: TBCHexEditor; //THexDump; // see inc/HexDump.pas for details 107 | fs: TMemoryStream; 108 | 109 | df_type: string; 110 | 111 | procedure SetupHexViewer; 112 | end; 113 | 114 | var 115 | frmEdit: TfrmEdit; 116 | 117 | implementation 118 | 119 | {$R *.lfm} 120 | 121 | procedure TfrmEdit.SetupHexViewer; 122 | begin 123 | hex_active := true; 124 | //hex := TBCHexEditor.Create(page_Stream); 125 | //hex.Parent := page_Stream; 126 | //hex.Align := alClient; 127 | 128 | //hex.LoadFromStream(fs); 129 | 130 | //hex.ReadOnlyView := false; 131 | // allow insert/delete bytes, if false, only edit 132 | //hex.InsertMode := chk_hex_AllowInsert.Checked; 133 | 134 | hex.LoadFromStream(fs); 135 | hex.InsertMode:=chk_hex_AllowInsert.Checked; 136 | 137 | end; 138 | 139 | 140 | procedure TfrmEdit.Button1Click(Sender: TObject); 141 | begin 142 | SaveDialog1.FileName := edit_ValueName.Text; 143 | if SaveDialog1.Execute then 144 | begin 145 | fs.SaveToFile(SaveDialog1.FileName); 146 | end; 147 | end; 148 | 149 | procedure TfrmEdit.Button3Click(Sender: TObject); 150 | begin 151 | if OpenDialog1.Execute then 152 | begin 153 | fs.Clear; 154 | fs.LoadFromFile(OpenDialog1.FileName); 155 | fs.Position := 0; 156 | hex.LoadFromStream(fs); 157 | end; 158 | end; 159 | 160 | procedure TfrmEdit.calendar_dateChange(Sender: TObject); 161 | begin 162 | calendar_time.Date := calendar_date.Date; 163 | end; 164 | 165 | procedure TfrmEdit.chk_hex_AllowInsertClick(Sender: TObject); 166 | begin 167 | hex.InsertMode:=chk_hex_AllowInsert.Checked; 168 | end; 169 | 170 | procedure TfrmEdit.edit_Int16KeyUp(Sender: TObject; var Key: Word; 171 | Shift: TShiftState); 172 | var i: Integer; 173 | ui: UInt32; 174 | begin 175 | lbl_Int16_outside_range.Caption := ''; 176 | if Length((Sender as TEdit).Text) > 0 then 177 | begin 178 | if df_type = 'Int16' then 179 | begin 180 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Int16_Hex.Text := IntToHex(Int16(i)) 181 | else 182 | begin 183 | edit_Int16_Hex.Text := ''; 184 | lbl_Int16_outside_range.Caption := 'Entered value is not a valid Int16 number'; 185 | end; 186 | 187 | end 188 | else 189 | begin 190 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Int8_Hex.Text := IntToHex(UInt16(ui)) 191 | else 192 | begin 193 | edit_Int16_Hex.Text := ''; 194 | lbl_Int16_outside_range.Caption := 'Entered value is not a valid UInt16 number'; 195 | end; 196 | end; 197 | end 198 | else 199 | edit_Int16_Hex.Text := ''; 200 | end; 201 | 202 | procedure TfrmEdit.edit_Int16_HexKeyUp(Sender: TObject; var Key: Word; 203 | Shift: TShiftState); 204 | var i: Integer; 205 | ui: UInt32; 206 | begin 207 | if Length((Sender as TEdit).Text) > 0 then 208 | begin 209 | if df_type = 'Int16' then 210 | begin 211 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Int16.Text := IntToStr(StrToInt('$'+(Sender as TEdit).Text)) 212 | else edit_Int16.Text := '0'; 213 | end 214 | else 215 | begin 216 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Int16.Text := format('%u', [ StrToUInt('$'+(Sender as TEdit).Text) ]) 217 | else edit_Int16.Text := '0'; 218 | end; 219 | end 220 | else 221 | edit_Int16.Text := '0'; 222 | end; 223 | 224 | procedure TfrmEdit.pagesChange(Sender: TObject); 225 | begin 226 | 227 | end; 228 | 229 | procedure TfrmEdit.edit_Int64KeyUp(Sender: TObject; var Key: Word; 230 | Shift: TShiftState); 231 | var i: Int64; 232 | ui: UInt64; 233 | begin 234 | lbl_Int64_outside_range.Caption := ''; 235 | if Length((Sender as TEdit).Text) > 0 then 236 | begin 237 | if df_type = 'Int64' then 238 | begin 239 | if TryStrToInt64((Sender as TEdit).Text, i) then edit_Int64_Hex.Text := IntToHex(i) 240 | else 241 | begin 242 | edit_Int64_Hex.Text := ''; 243 | lbl_Int64_outside_range.Caption := 'Entered value is not a valid Int64 number'; 244 | end; 245 | end 246 | else 247 | begin 248 | if TryStrToUInt64((Sender as TEdit).Text, ui) then edit_Int64_Hex.Text := IntToHex(ui) 249 | else 250 | begin 251 | edit_Int64_Hex.Text := ''; 252 | lbl_Int64_outside_range.Caption := 'Entered value is not a valid UInt64 number'; 253 | end; 254 | end; 255 | end 256 | else 257 | edit_Int64_Hex.Text := ''; 258 | end; 259 | 260 | procedure TfrmEdit.edit_Int64_HexKeyUp(Sender: TObject; var Key: Word; 261 | Shift: TShiftState); 262 | var i: Int64; 263 | ui: UInt64; 264 | begin 265 | if Length((Sender as TEdit).Text) > 0 then 266 | begin 267 | if df_type = 'Int32' then 268 | begin 269 | if TryStrToInt64('$'+(Sender as TEdit).Text, i) then edit_Int64.Text := IntToStr(StrToInt64('$'+(Sender as TEdit).Text)) 270 | else edit_Int64.Text := '0'; 271 | end 272 | else 273 | begin 274 | if TryStrToUInt64('$'+(Sender as TEdit).Text, ui) then edit_Int64.Text := format('%u', [ StrToUInt64('$'+(Sender as TEdit).Text) ]) 275 | else edit_Int64.Text := '0'; 276 | end; 277 | end 278 | else 279 | edit_Integer.Text := '0'; 280 | end; 281 | 282 | procedure TfrmEdit.edit_Int8KeyUp(Sender: TObject; var Key: Word; 283 | Shift: TShiftState); 284 | var i: Integer; 285 | ui: UInt32; 286 | begin 287 | lbl_Int8_outside_range.Caption := ''; 288 | if Length((Sender as TEdit).Text) > 0 then 289 | begin 290 | if df_type = 'Int8' then 291 | begin 292 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Int8_Hex.Text := IntToHex(Int8(i)) 293 | else 294 | begin 295 | edit_Int8_Hex.Text := ''; 296 | lbl_Int8_outside_range.Caption := 'Entered value is not a valid Int8 number'; 297 | end; 298 | 299 | end 300 | else 301 | begin 302 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Int8_Hex.Text := IntToHex(UInt8(ui)) 303 | else 304 | begin 305 | edit_Int8_Hex.Text := ''; 306 | lbl_Int8_outside_range.Caption := 'Entered value is not a valid UInt8 number'; 307 | end; 308 | end; 309 | end 310 | else 311 | edit_Int8_Hex.Text := ''; 312 | end; 313 | 314 | procedure TfrmEdit.edit_Int8_HexKeyUp(Sender: TObject; var Key: Word; 315 | Shift: TShiftState); 316 | var i: Integer; 317 | ui: UInt32; 318 | begin 319 | if Length((Sender as TEdit).Text) > 0 then 320 | begin 321 | if df_type = 'Int8' then 322 | begin 323 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Int8.Text := IntToStr(Int8(StrToInt('$'+(Sender as TEdit).Text))) 324 | else edit_Int8.Text := '0'; 325 | end 326 | else 327 | begin 328 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Int8.Text := format('%u', [ UInt8(StrToUInt('$'+(Sender as TEdit).Text)) ]) 329 | else edit_Int8.Text := '0'; 330 | end; 331 | end 332 | else 333 | edit_Int8.Text := '0'; 334 | end; 335 | 336 | procedure TfrmEdit.edit_IntegerKeyUp(Sender: TObject; var Key: Word; 337 | Shift: TShiftState); 338 | var i: Integer; 339 | ui: UInt32; 340 | begin 341 | lbl_Integer_outside_range.Caption := ''; 342 | if Length((Sender as TEdit).Text) > 0 then 343 | begin 344 | if df_type = 'Int32' then 345 | begin 346 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Integer_Hex.Text := IntToHex(i) 347 | else 348 | begin 349 | edit_Integer_Hex.Text := ''; 350 | lbl_Integer_outside_range.Caption := 'Entered value is not a valid Int32 number'; 351 | end; 352 | 353 | end 354 | else 355 | begin 356 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Integer_Hex.Text := IntToHex(ui) 357 | else 358 | begin 359 | edit_Integer_Hex.Text := ''; 360 | lbl_Integer_outside_range.Caption := 'Entered value is not a valid UInt32 number'; 361 | end; 362 | end; 363 | end 364 | else 365 | edit_Integer_Hex.Text := ''; 366 | end; 367 | 368 | procedure TfrmEdit.edit_Integer_HexKeyUp(Sender: TObject; var Key: Word; 369 | Shift: TShiftState); 370 | var i: Integer; 371 | ui: UInt32; 372 | begin 373 | if Length((Sender as TEdit).Text) > 0 then 374 | begin 375 | if df_type = 'Int32' then 376 | begin 377 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Integer.Text := IntToStr(StrToInt('$'+(Sender as TEdit).Text)) 378 | else edit_Integer.Text := '0'; 379 | end 380 | else 381 | begin 382 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Integer.Text := format('%u', [ StrToUInt('$'+(Sender as TEdit).Text) ]) 383 | else edit_Integer.Text := '0'; 384 | end; 385 | end 386 | else 387 | edit_Integer.Text := '0'; 388 | end; 389 | 390 | procedure TfrmEdit.FormClose(Sender: TObject); 391 | var i:Integer; 392 | i64:Int64; 393 | f:double; 394 | begin 395 | // quick sanity check 396 | if (df_type = 'Int8') or (df_type = 'UInt8') then if not TryStrToInt(edit_Int8.Text, i) then edit_Integer.Text := '0'; 397 | if (df_type = 'Int16') or (df_type = 'UInt16') then if not TryStrToInt(edit_Int16.Text, i) then edit_Int16.Text := '0'; 398 | if (df_type = 'Int32') or (df_type = 'UInt32') then if not TryStrToInt(edit_Integer.Text, i) then edit_Integer.Text := '0'; 399 | if (df_type = 'Int64') or (df_type = 'UInt64') then if not TryStrToInt64(edit_Int64.Text, i64) then edit_Int64.Text := '0'; 400 | if (df_type = 'Single') or (df_type = 'Double') or (df_type = 'Currency') then if not TryStrToFloat(edit_float.Text, f) then edit_float.Text := '0'; 401 | 402 | if hex_active then 403 | begin 404 | fs.Clear; 405 | hex.SaveToStream(fs); 406 | // hex.Free; 407 | end; 408 | end; 409 | 410 | procedure TfrmEdit.FormCreate(Sender: TObject); 411 | begin 412 | hex_active := false; 413 | end; 414 | 415 | procedure TfrmEdit.FormShow(Sender: TObject); 416 | var i:integer; 417 | begin 418 | lbl_Integer_outside_range.Caption := ''; 419 | lbl_Int64_outside_range.Caption := ''; 420 | 421 | for i:= 0 to pages.PageCount-1 do 422 | begin 423 | if pages.Pages[i] <> pages.ActivePage then pages.Pages[i].TabVisible := false; 424 | 425 | end; 426 | end; 427 | 428 | end. 429 | -------------------------------------------------------------------------------- /DataFileEditor/uEditValue.pas: -------------------------------------------------------------------------------- 1 | unit uEditValue; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.StdCtrls, 8 | BCHexEditor; 9 | 10 | type 11 | TfrmEdit = class(TForm) 12 | pages: TPageControl; 13 | page_String: TTabSheet; 14 | Panel1: TPanel; 15 | btn_Save: TButton; 16 | Button2: TButton; 17 | edit_String: TMemo; 18 | page_Integer: TTabSheet; 19 | edit_Integer: TEdit; 20 | Label1: TLabel; 21 | Label2: TLabel; 22 | edit_Integer_Hex: TEdit; 23 | lbl_Integer_outside_range: TLabel; 24 | page_Stream: TTabSheet; 25 | Panel2: TPanel; 26 | edit_ValuePath: TEdit; 27 | page_Int64: TTabSheet; 28 | Label3: TLabel; 29 | edit_Int64: TEdit; 30 | lbl_Int64_outside_range: TLabel; 31 | Label5: TLabel; 32 | edit_Int64_Hex: TEdit; 33 | edit_ValueName: TEdit; 34 | Label6: TLabel; 35 | Label7: TLabel; 36 | Label8: TLabel; 37 | edit_int32_type: TEdit; 38 | edit_int64_type: TEdit; 39 | Label9: TLabel; 40 | Panel3: TPanel; 41 | chk_hex_AllowInsert: TCheckBox; 42 | page_Float: TTabSheet; 43 | Label4: TLabel; 44 | edit_float_type: TEdit; 45 | Label10: TLabel; 46 | edit_float: TEdit; 47 | page_Calendar: TTabSheet; 48 | calendar_time: TDateTimePicker; 49 | Label13: TLabel; 50 | Label15: TLabel; 51 | calendar_date: TDateTimePicker; 52 | Button1: TButton; 53 | Button3: TButton; 54 | OpenDialog1: TOpenDialog; 55 | SaveDialog1: TSaveDialog; 56 | page_Int8: TTabSheet; 57 | edit_Int8: TEdit; 58 | edit_Int8_Hex: TEdit; 59 | Label11: TLabel; 60 | lbl_Int8_outside_range: TLabel; 61 | Label14: TLabel; 62 | edit_int8_type: TEdit; 63 | Label16: TLabel; 64 | page_Int16: TTabSheet; 65 | Label12: TLabel; 66 | edit_int16_type: TEdit; 67 | Label17: TLabel; 68 | edit_Int16: TEdit; 69 | lbl_Int16_outside_range: TLabel; 70 | Label19: TLabel; 71 | edit_Int16_Hex: TEdit; 72 | procedure edit_IntegerKeyUp(Sender: TObject; var Key: Word; 73 | Shift: TShiftState); 74 | procedure edit_Integer_HexKeyUp(Sender: TObject; var Key: Word; 75 | Shift: TShiftState); 76 | procedure FormCreate(Sender: TObject); 77 | procedure FormClose(Sender: TObject; var Action: TCloseAction); 78 | procedure FormShow(Sender: TObject); 79 | procedure edit_Int64KeyUp(Sender: TObject; var Key: Word; 80 | Shift: TShiftState); 81 | procedure edit_Int64_HexKeyUp(Sender: TObject; var Key: Word; 82 | Shift: TShiftState); 83 | procedure chk_hex_AllowInsertClick(Sender: TObject); 84 | procedure calendar_dateChange(Sender: TObject); 85 | procedure Button1Click(Sender: TObject); 86 | procedure Button3Click(Sender: TObject); 87 | procedure edit_Int8KeyUp(Sender: TObject; var Key: Word; 88 | Shift: TShiftState); 89 | procedure edit_Int8_HexKeyUp(Sender: TObject; var Key: Word; 90 | Shift: TShiftState); 91 | procedure edit_Int16KeyUp(Sender: TObject; var Key: Word; 92 | Shift: TShiftState); 93 | procedure edit_Int16_HexKeyUp(Sender: TObject; var Key: Word; 94 | Shift: TShiftState); 95 | private 96 | { Private declarations } 97 | hex_active: boolean; 98 | public 99 | { Public declarations } 100 | hex: TBCHexEditor; //THexDump; // see inc/HexDump.pas for details 101 | fs: TMemoryStream; 102 | 103 | df_type: string; 104 | 105 | procedure SetupHexViewer; 106 | end; 107 | 108 | var 109 | frmEdit: TfrmEdit; 110 | 111 | implementation 112 | 113 | {$R *.dfm} 114 | 115 | procedure TfrmEdit.SetupHexViewer; 116 | begin 117 | hex_active := true; 118 | hex := TBCHexEditor.Create(page_Stream); 119 | hex.Parent := page_Stream; 120 | hex.Align := alClient; 121 | 122 | hex.LoadFromStream(fs); 123 | 124 | hex.ReadOnlyView := false; 125 | // allow insert/delete bytes, if false, only edit 126 | hex.InsertMode := chk_hex_AllowInsert.Checked; 127 | 128 | end; 129 | 130 | 131 | procedure TfrmEdit.Button1Click(Sender: TObject); 132 | begin 133 | SaveDialog1.FileName := edit_ValueName.Text; 134 | if SaveDialog1.Execute then 135 | begin 136 | fs.SaveToFile(SaveDialog1.FileName); 137 | end; 138 | end; 139 | 140 | procedure TfrmEdit.Button3Click(Sender: TObject); 141 | begin 142 | if OpenDialog1.Execute then 143 | begin 144 | fs.Clear; 145 | fs.LoadFromFile(OpenDialog1.FileName); 146 | fs.Position := 0; 147 | hex.LoadFromStream(fs); 148 | end; 149 | end; 150 | 151 | procedure TfrmEdit.calendar_dateChange(Sender: TObject); 152 | begin 153 | calendar_time.Date := calendar_date.Date; 154 | end; 155 | 156 | procedure TfrmEdit.chk_hex_AllowInsertClick(Sender: TObject); 157 | begin 158 | hex.InsertMode := chk_hex_AllowInsert.Checked; 159 | end; 160 | 161 | procedure TfrmEdit.edit_Int16KeyUp(Sender: TObject; var Key: Word; 162 | Shift: TShiftState); 163 | var i: Integer; 164 | ui: UInt32; 165 | begin 166 | lbl_Int16_outside_range.Caption := ''; 167 | if Length((Sender as TEdit).Text) > 0 then 168 | begin 169 | if df_type = 'Int16' then 170 | begin 171 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Int16_Hex.Text := IntToHex(Int16(i)) 172 | else 173 | begin 174 | edit_Int16_Hex.Text := ''; 175 | lbl_Int16_outside_range.Caption := 'Entered value is not a valid Int16 number'; 176 | end; 177 | 178 | end 179 | else 180 | begin 181 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Int8_Hex.Text := IntToHex(UInt16(ui)) 182 | else 183 | begin 184 | edit_Int16_Hex.Text := ''; 185 | lbl_Int16_outside_range.Caption := 'Entered value is not a valid UInt16 number'; 186 | end; 187 | end; 188 | end 189 | else 190 | edit_Int16_Hex.Text := ''; 191 | end; 192 | 193 | procedure TfrmEdit.edit_Int16_HexKeyUp(Sender: TObject; var Key: Word; 194 | Shift: TShiftState); 195 | var i: Integer; 196 | ui: UInt32; 197 | begin 198 | if Length((Sender as TEdit).Text) > 0 then 199 | begin 200 | if df_type = 'Int16' then 201 | begin 202 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Int16.Text := IntToStr(StrToInt('$'+(Sender as TEdit).Text)) 203 | else edit_Int16.Text := '0'; 204 | end 205 | else 206 | begin 207 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Int16.Text := format('%u', [ StrToUInt('$'+(Sender as TEdit).Text) ]) 208 | else edit_Int16.Text := '0'; 209 | end; 210 | end 211 | else 212 | edit_Int16.Text := '0'; 213 | end; 214 | 215 | procedure TfrmEdit.edit_Int64KeyUp(Sender: TObject; var Key: Word; 216 | Shift: TShiftState); 217 | var i: Int64; 218 | ui: UInt64; 219 | begin 220 | lbl_Int64_outside_range.Caption := ''; 221 | if Length((Sender as TEdit).Text) > 0 then 222 | begin 223 | if df_type = 'Int64' then 224 | begin 225 | if TryStrToInt64((Sender as TEdit).Text, i) then edit_Int64_Hex.Text := IntToHex(i) 226 | else 227 | begin 228 | edit_Int64_Hex.Text := ''; 229 | lbl_Int64_outside_range.Caption := 'Entered value is not a valid Int64 number'; 230 | end; 231 | end 232 | else 233 | begin 234 | if TryStrToUInt64((Sender as TEdit).Text, ui) then edit_Int64_Hex.Text := IntToHex(ui) 235 | else 236 | begin 237 | edit_Int64_Hex.Text := ''; 238 | lbl_Int64_outside_range.Caption := 'Entered value is not a valid UInt64 number'; 239 | end; 240 | end; 241 | end 242 | else 243 | edit_Int64_Hex.Text := ''; 244 | end; 245 | 246 | procedure TfrmEdit.edit_Int64_HexKeyUp(Sender: TObject; var Key: Word; 247 | Shift: TShiftState); 248 | var i: Int64; 249 | ui: UInt64; 250 | begin 251 | if Length((Sender as TEdit).Text) > 0 then 252 | begin 253 | if df_type = 'Int32' then 254 | begin 255 | if TryStrToInt64('$'+(Sender as TEdit).Text, i) then edit_Int64.Text := IntToStr(StrToInt64('$'+(Sender as TEdit).Text)) 256 | else edit_Int64.Text := '0'; 257 | end 258 | else 259 | begin 260 | if TryStrToUInt64('$'+(Sender as TEdit).Text, ui) then edit_Int64.Text := format('%u', [ StrToUInt64('$'+(Sender as TEdit).Text) ]) 261 | else edit_Int64.Text := '0'; 262 | end; 263 | end 264 | else 265 | edit_Integer.Text := '0'; 266 | end; 267 | 268 | procedure TfrmEdit.edit_Int8KeyUp(Sender: TObject; var Key: Word; 269 | Shift: TShiftState); 270 | var i: Integer; 271 | ui: UInt32; 272 | begin 273 | lbl_Int8_outside_range.Caption := ''; 274 | if Length((Sender as TEdit).Text) > 0 then 275 | begin 276 | if df_type = 'Int8' then 277 | begin 278 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Int8_Hex.Text := IntToHex(Int8(i)) 279 | else 280 | begin 281 | edit_Int8_Hex.Text := ''; 282 | lbl_Int8_outside_range.Caption := 'Entered value is not a valid Int8 number'; 283 | end; 284 | 285 | end 286 | else 287 | begin 288 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Int8_Hex.Text := IntToHex(UInt8(ui)) 289 | else 290 | begin 291 | edit_Int8_Hex.Text := ''; 292 | lbl_Int8_outside_range.Caption := 'Entered value is not a valid UInt8 number'; 293 | end; 294 | end; 295 | end 296 | else 297 | edit_Int8_Hex.Text := ''; 298 | end; 299 | 300 | procedure TfrmEdit.edit_Int8_HexKeyUp(Sender: TObject; var Key: Word; 301 | Shift: TShiftState); 302 | var i: Integer; 303 | ui: UInt32; 304 | begin 305 | if Length((Sender as TEdit).Text) > 0 then 306 | begin 307 | if df_type = 'Int8' then 308 | begin 309 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Int8.Text := IntToStr(Int8(StrToInt('$'+(Sender as TEdit).Text))) 310 | else edit_Int8.Text := '0'; 311 | end 312 | else 313 | begin 314 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Int8.Text := format('%u', [ UInt8(StrToUInt('$'+(Sender as TEdit).Text)) ]) 315 | else edit_Int8.Text := '0'; 316 | end; 317 | end 318 | else 319 | edit_Int8.Text := '0'; 320 | end; 321 | 322 | procedure TfrmEdit.edit_IntegerKeyUp(Sender: TObject; var Key: Word; 323 | Shift: TShiftState); 324 | var i: Integer; 325 | ui: UInt32; 326 | begin 327 | lbl_Integer_outside_range.Caption := ''; 328 | if Length((Sender as TEdit).Text) > 0 then 329 | begin 330 | if df_type = 'Int32' then 331 | begin 332 | if TryStrToInt((Sender as TEdit).Text, i) then edit_Integer_Hex.Text := IntToHex(i) 333 | else 334 | begin 335 | edit_Integer_Hex.Text := ''; 336 | lbl_Integer_outside_range.Caption := 'Entered value is not a valid Int32 number'; 337 | end; 338 | 339 | end 340 | else 341 | begin 342 | if TryStrToUInt((Sender as TEdit).Text, ui) then edit_Integer_Hex.Text := IntToHex(ui) 343 | else 344 | begin 345 | edit_Integer_Hex.Text := ''; 346 | lbl_Integer_outside_range.Caption := 'Entered value is not a valid UInt32 number'; 347 | end; 348 | end; 349 | end 350 | else 351 | edit_Integer_Hex.Text := ''; 352 | end; 353 | 354 | procedure TfrmEdit.edit_Integer_HexKeyUp(Sender: TObject; var Key: Word; 355 | Shift: TShiftState); 356 | var i: Integer; 357 | ui: UInt32; 358 | begin 359 | if Length((Sender as TEdit).Text) > 0 then 360 | begin 361 | if df_type = 'Int32' then 362 | begin 363 | if TryStrToInt('$'+(Sender as TEdit).Text, i) then edit_Integer.Text := IntToStr(StrToInt('$'+(Sender as TEdit).Text)) 364 | else edit_Integer.Text := '0'; 365 | end 366 | else 367 | begin 368 | if TryStrToUInt('$'+(Sender as TEdit).Text, ui) then edit_Integer.Text := format('%u', [ StrToUInt('$'+(Sender as TEdit).Text) ]) 369 | else edit_Integer.Text := '0'; 370 | end; 371 | end 372 | else 373 | edit_Integer.Text := '0'; 374 | end; 375 | 376 | procedure TfrmEdit.FormClose(Sender: TObject; var Action: TCloseAction); 377 | var i: Integer; 378 | ui: UInt32; 379 | i64: Int64; 380 | ui64: UInt64; 381 | f: double; 382 | begin 383 | // quick sanity check 384 | if (df_type = 'Int8') then if not TryStrToInt(edit_Int8.Text, i) then edit_Integer.Text := '0'; 385 | if (df_type = 'UInt8') then if not TryStrToUInt(edit_Int8.Text, ui) then edit_Integer.Text := '0'; 386 | 387 | if (df_type = 'Int16') then if not TryStrToInt(edit_Int16.Text, i) then edit_Int16.Text := '0'; 388 | if (df_type = 'UInt16') then if not TryStrToUInt(edit_Int16.Text, ui) then edit_Int16.Text := '0'; 389 | 390 | if (df_type = 'Int32') then if not TryStrToInt(edit_Integer.Text, i) then edit_Integer.Text := '0'; 391 | if (df_type = 'UInt32') then if not TryStrToUInt(edit_Integer.Text, ui) then edit_Integer.Text := '0'; 392 | 393 | if (df_type = 'Int64') then if not TryStrToInt64(edit_Int64.Text, i64) then edit_Int64.Text := '0'; 394 | if (df_type = 'UInt64') then if not TryStrToUInt64(edit_Int64.Text, ui64) then edit_Int64.Text := '0'; 395 | 396 | if (df_type = 'Single') or (df_type = 'Double') or (df_type = 'Currency') then if not TryStrToFloat(edit_float.Text, f) then edit_float.Text := '0'; 397 | 398 | if hex_active then 399 | begin 400 | fs.Clear; 401 | hex.SaveToStream(fs); 402 | hex.Free; 403 | end; 404 | end; 405 | 406 | procedure TfrmEdit.FormCreate(Sender: TObject); 407 | begin 408 | hex_active := false; 409 | end; 410 | 411 | procedure TfrmEdit.FormShow(Sender: TObject); 412 | var i:integer; 413 | begin 414 | lbl_Int8_outside_range.Caption := ''; 415 | lbl_Int16_outside_range.Caption := ''; 416 | lbl_Integer_outside_range.Caption := ''; 417 | lbl_Int64_outside_range.Caption := ''; 418 | 419 | for i:= 0 to pages.PageCount-1 do 420 | begin 421 | if pages.Pages[i] <> pages.ActivePage then pages.Pages[i].TabVisible := false; 422 | 423 | end; 424 | end; 425 | 426 | end. 427 | -------------------------------------------------------------------------------- /DataFileEditor/uEditValue.dfm: -------------------------------------------------------------------------------- 1 | object frmEdit: TfrmEdit 2 | Left = 0 3 | Top = 0 4 | BorderIcons = [biSystemMenu] 5 | Caption = 'Edit value' 6 | ClientHeight = 413 7 | ClientWidth = 771 8 | Color = clBtnFace 9 | DoubleBuffered = True 10 | Font.Charset = DEFAULT_CHARSET 11 | Font.Color = clWindowText 12 | Font.Height = -13 13 | Font.Name = 'Segoe UI' 14 | Font.Style = [] 15 | Font.Quality = fqClearTypeNatural 16 | OldCreateOrder = False 17 | OnClose = FormClose 18 | OnCreate = FormCreate 19 | OnShow = FormShow 20 | PixelsPerInch = 96 21 | TextHeight = 17 22 | object pages: TPageControl 23 | AlignWithMargins = True 24 | Left = 5 25 | Top = 70 26 | Width = 761 27 | Height = 297 28 | Margins.Left = 5 29 | Margins.Top = 5 30 | Margins.Right = 5 31 | Margins.Bottom = 5 32 | ActivePage = page_Int8 33 | Align = alClient 34 | TabOrder = 0 35 | object page_String: TTabSheet 36 | Caption = 'Edit string value' 37 | object edit_String: TMemo 38 | AlignWithMargins = True 39 | Left = 20 40 | Top = 20 41 | Width = 713 42 | Height = 225 43 | Margins.Left = 20 44 | Margins.Top = 20 45 | Margins.Right = 20 46 | Margins.Bottom = 20 47 | Align = alClient 48 | Lines.Strings = ( 49 | 'edit_String') 50 | ScrollBars = ssBoth 51 | TabOrder = 0 52 | end 53 | end 54 | object page_Int8: TTabSheet 55 | Caption = 'Edit 8-bit Integer' 56 | ImageIndex = 6 57 | DesignSize = ( 58 | 753 59 | 265) 60 | object Label11: TLabel 61 | Left = 24 62 | Top = 144 63 | Width = 74 64 | Height = 17 65 | Caption = 'Hexadecimal' 66 | end 67 | object lbl_Int8_outside_range: TLabel 68 | Left = 24 69 | Top = 119 70 | Width = 545 71 | Height = 17 72 | AutoSize = False 73 | Caption = '%error_outside_range%' 74 | end 75 | object Label14: TLabel 76 | Left = 24 77 | Top = 64 78 | Width = 46 79 | Height = 17 80 | Caption = 'Decimal' 81 | end 82 | object Label16: TLabel 83 | Left = 24 84 | Top = 10 85 | Width = 73 86 | Height = 17 87 | Caption = 'Integer type:' 88 | end 89 | object edit_Int8: TEdit 90 | Left = 24 91 | Top = 88 92 | Width = 701 93 | Height = 25 94 | Anchors = [akLeft, akTop, akRight] 95 | TabOrder = 0 96 | OnKeyUp = edit_Int8KeyUp 97 | end 98 | object edit_Int8_Hex: TEdit 99 | Left = 24 100 | Top = 168 101 | Width = 701 102 | Height = 25 103 | Anchors = [akLeft, akTop, akRight] 104 | CharCase = ecUpperCase 105 | MaxLength = 2 106 | TabOrder = 1 107 | OnKeyUp = edit_Int8_HexKeyUp 108 | end 109 | object edit_int8_type: TEdit 110 | Left = 24 111 | Top = 33 112 | Width = 300 113 | Height = 25 114 | ReadOnly = True 115 | TabOrder = 2 116 | Text = 'Int8 | 8-bit Signed Integer [-128 .. 127]' 117 | end 118 | end 119 | object page_Int16: TTabSheet 120 | Caption = 'Edit 16-bit Integer' 121 | ImageIndex = 7 122 | DesignSize = ( 123 | 753 124 | 265) 125 | object Label12: TLabel 126 | Left = 24 127 | Top = 10 128 | Width = 73 129 | Height = 17 130 | Caption = 'Integer type:' 131 | end 132 | object Label17: TLabel 133 | Left = 24 134 | Top = 64 135 | Width = 46 136 | Height = 17 137 | Caption = 'Decimal' 138 | end 139 | object lbl_Int16_outside_range: TLabel 140 | Left = 24 141 | Top = 119 142 | Width = 545 143 | Height = 17 144 | AutoSize = False 145 | Caption = '%error_outside_range%' 146 | end 147 | object Label19: TLabel 148 | Left = 24 149 | Top = 144 150 | Width = 74 151 | Height = 17 152 | Caption = 'Hexadecimal' 153 | end 154 | object edit_int16_type: TEdit 155 | Left = 24 156 | Top = 33 157 | Width = 300 158 | Height = 25 159 | ReadOnly = True 160 | TabOrder = 0 161 | Text = 'Int16 | 16-bit Signed Integer [-32768 .. 32767]' 162 | end 163 | object edit_Int16: TEdit 164 | Left = 24 165 | Top = 88 166 | Width = 701 167 | Height = 25 168 | Anchors = [akLeft, akTop, akRight] 169 | TabOrder = 1 170 | OnKeyUp = edit_Int16KeyUp 171 | end 172 | object edit_Int16_Hex: TEdit 173 | Left = 24 174 | Top = 168 175 | Width = 701 176 | Height = 25 177 | Anchors = [akLeft, akTop, akRight] 178 | CharCase = ecUpperCase 179 | MaxLength = 4 180 | TabOrder = 2 181 | OnKeyUp = edit_Int16_HexKeyUp 182 | end 183 | end 184 | object page_Integer: TTabSheet 185 | Caption = 'Edit 32-bit Integer' 186 | ImageIndex = 1 187 | DesignSize = ( 188 | 753 189 | 265) 190 | object Label1: TLabel 191 | Left = 24 192 | Top = 64 193 | Width = 46 194 | Height = 17 195 | Caption = 'Decimal' 196 | end 197 | object Label2: TLabel 198 | Left = 24 199 | Top = 144 200 | Width = 74 201 | Height = 17 202 | Caption = 'Hexadecimal' 203 | end 204 | object lbl_Integer_outside_range: TLabel 205 | Left = 24 206 | Top = 119 207 | Width = 545 208 | Height = 17 209 | AutoSize = False 210 | Caption = '%error_outside_range%' 211 | end 212 | object Label8: TLabel 213 | Left = 24 214 | Top = 10 215 | Width = 73 216 | Height = 17 217 | Caption = 'Integer type:' 218 | end 219 | object edit_Integer: TEdit 220 | Left = 24 221 | Top = 88 222 | Width = 701 223 | Height = 25 224 | Anchors = [akLeft, akTop, akRight] 225 | TabOrder = 0 226 | OnKeyUp = edit_IntegerKeyUp 227 | end 228 | object edit_Integer_Hex: TEdit 229 | Left = 24 230 | Top = 168 231 | Width = 701 232 | Height = 25 233 | Anchors = [akLeft, akTop, akRight] 234 | CharCase = ecUpperCase 235 | MaxLength = 8 236 | TabOrder = 1 237 | OnKeyUp = edit_Integer_HexKeyUp 238 | end 239 | object edit_int32_type: TEdit 240 | Left = 24 241 | Top = 33 242 | Width = 300 243 | Height = 25 244 | ReadOnly = True 245 | TabOrder = 2 246 | Text = 'Int32 | 32-bit Signed Integer' 247 | end 248 | end 249 | object page_Int64: TTabSheet 250 | Caption = 'Edit 64-bit Integer' 251 | ImageIndex = 3 252 | DesignSize = ( 253 | 753 254 | 265) 255 | object Label3: TLabel 256 | Left = 24 257 | Top = 64 258 | Width = 46 259 | Height = 17 260 | Caption = 'Decimal' 261 | end 262 | object lbl_Int64_outside_range: TLabel 263 | Left = 24 264 | Top = 119 265 | Width = 545 266 | Height = 17 267 | AutoSize = False 268 | Caption = '%error_outside_range%' 269 | end 270 | object Label5: TLabel 271 | Left = 24 272 | Top = 144 273 | Width = 74 274 | Height = 17 275 | Caption = 'Hexadecimal' 276 | end 277 | object Label9: TLabel 278 | Left = 24 279 | Top = 10 280 | Width = 73 281 | Height = 17 282 | Caption = 'Integer type:' 283 | end 284 | object edit_Int64: TEdit 285 | Left = 24 286 | Top = 88 287 | Width = 701 288 | Height = 25 289 | Anchors = [akLeft, akTop, akRight] 290 | TabOrder = 0 291 | OnKeyUp = edit_Int64KeyUp 292 | end 293 | object edit_Int64_Hex: TEdit 294 | Left = 24 295 | Top = 168 296 | Width = 701 297 | Height = 25 298 | Anchors = [akLeft, akTop, akRight] 299 | CharCase = ecUpperCase 300 | MaxLength = 16 301 | TabOrder = 1 302 | OnKeyUp = edit_Int64_HexKeyUp 303 | end 304 | object edit_int64_type: TEdit 305 | Left = 24 306 | Top = 33 307 | Width = 300 308 | Height = 25 309 | ReadOnly = True 310 | TabOrder = 2 311 | Text = 'Int64 | 64-bit Signed Integer' 312 | end 313 | end 314 | object page_Float: TTabSheet 315 | Caption = 'Edit float' 316 | ImageIndex = 4 317 | DesignSize = ( 318 | 753 319 | 265) 320 | object Label4: TLabel 321 | Left = 24 322 | Top = 10 323 | Width = 60 324 | Height = 17 325 | Caption = 'Float type:' 326 | end 327 | object Label10: TLabel 328 | Left = 24 329 | Top = 64 330 | Width = 92 331 | Height = 17 332 | Caption = 'Value (Decimal):' 333 | end 334 | object edit_float_type: TEdit 335 | Left = 24 336 | Top = 33 337 | Width = 300 338 | Height = 25 339 | Anchors = [akLeft, akTop, akRight] 340 | ReadOnly = True 341 | TabOrder = 0 342 | Text = 'Double | 64-bit Float' 343 | end 344 | object edit_float: TEdit 345 | Left = 24 346 | Top = 88 347 | Width = 701 348 | Height = 25 349 | Anchors = [akLeft, akTop, akRight] 350 | TabOrder = 1 351 | end 352 | end 353 | object page_Calendar: TTabSheet 354 | Caption = 'Edit date time' 355 | ImageIndex = 5 356 | object Label13: TLabel 357 | Left = 24 358 | Top = 9 359 | Width = 30 360 | Height = 17 361 | Caption = 'Date:' 362 | end 363 | object Label15: TLabel 364 | Left = 24 365 | Top = 105 366 | Width = 31 367 | Height = 17 368 | Caption = 'Time:' 369 | end 370 | object calendar_time: TDateTimePicker 371 | Left = 24 372 | Top = 128 373 | Width = 201 374 | Height = 45 375 | Date = 45040.000000000000000000 376 | Time = 0.684921574073087000 377 | Font.Charset = DEFAULT_CHARSET 378 | Font.Color = clWindowText 379 | Font.Height = -27 380 | Font.Name = 'Segoe UI' 381 | Font.Style = [] 382 | Font.Quality = fqClearTypeNatural 383 | Kind = dtkTime 384 | ParentFont = False 385 | TabOrder = 0 386 | end 387 | object calendar_date: TDateTimePicker 388 | Left = 24 389 | Top = 32 390 | Width = 201 391 | Height = 45 392 | Date = 45040.000000000000000000 393 | Time = 0.684921574073087000 394 | Checked = False 395 | Font.Charset = DEFAULT_CHARSET 396 | Font.Color = clWindowText 397 | Font.Height = -27 398 | Font.Name = 'Segoe UI' 399 | Font.Style = [] 400 | Font.Quality = fqClearTypeNatural 401 | ParentFont = False 402 | TabOrder = 1 403 | OnChange = calendar_dateChange 404 | end 405 | end 406 | object page_Stream: TTabSheet 407 | Caption = 'Edit binary data' 408 | ImageIndex = 2 409 | object Panel3: TPanel 410 | Left = 0 411 | Top = 232 412 | Width = 753 413 | Height = 33 414 | Align = alBottom 415 | BevelOuter = bvNone 416 | TabOrder = 0 417 | object chk_hex_AllowInsert: TCheckBox 418 | Left = 8 419 | Top = 8 420 | Width = 233 421 | Height = 17 422 | Caption = 'Allow insert and delete' 423 | TabOrder = 0 424 | OnClick = chk_hex_AllowInsertClick 425 | end 426 | object Button1: TButton 427 | Left = 639 428 | Top = 4 429 | Width = 110 430 | Height = 25 431 | Caption = 'Export to file' 432 | TabOrder = 1 433 | OnClick = Button1Click 434 | end 435 | object Button3: TButton 436 | Left = 520 437 | Top = 4 438 | Width = 110 439 | Height = 25 440 | Caption = 'Import from file' 441 | TabOrder = 2 442 | OnClick = Button3Click 443 | end 444 | end 445 | end 446 | end 447 | object Panel1: TPanel 448 | Left = 0 449 | Top = 372 450 | Width = 771 451 | Height = 41 452 | Align = alBottom 453 | BevelOuter = bvNone 454 | TabOrder = 1 455 | DesignSize = ( 456 | 771 457 | 41) 458 | object btn_Save: TButton 459 | Left = 687 460 | Top = 3 461 | Width = 75 462 | Height = 30 463 | Anchors = [akTop, akRight] 464 | Caption = 'Save' 465 | Default = True 466 | ModalResult = 1 467 | TabOrder = 0 468 | end 469 | object Button2: TButton 470 | Left = 5 471 | Top = 3 472 | Width = 75 473 | Height = 30 474 | Caption = 'Cancel' 475 | ModalResult = 2 476 | TabOrder = 1 477 | end 478 | end 479 | object Panel2: TPanel 480 | Left = 0 481 | Top = 0 482 | Width = 771 483 | Height = 65 484 | Align = alTop 485 | BevelOuter = bvNone 486 | TabOrder = 2 487 | DesignSize = ( 488 | 771 489 | 65) 490 | object Label6: TLabel 491 | Left = 44 492 | Top = 10 493 | Width = 54 494 | Height = 17 495 | Alignment = taRightJustify 496 | Caption = 'Key path:' 497 | end 498 | object Label7: TLabel 499 | Left = 40 500 | Top = 41 501 | Width = 58 502 | Height = 17 503 | Alignment = taRightJustify 504 | Caption = 'Key value:' 505 | end 506 | object edit_ValuePath: TEdit 507 | Left = 104 508 | Top = 7 509 | Width = 658 510 | Height = 25 511 | Anchors = [akLeft, akTop, akRight] 512 | Enabled = False 513 | ReadOnly = True 514 | TabOrder = 0 515 | end 516 | object edit_ValueName: TEdit 517 | Left = 104 518 | Top = 38 519 | Width = 658 520 | Height = 25 521 | Anchors = [akLeft, akTop, akRight] 522 | Enabled = False 523 | ReadOnly = True 524 | TabOrder = 1 525 | end 526 | end 527 | object OpenDialog1: TOpenDialog 528 | Left = 721 529 | Top = 114 530 | end 531 | object SaveDialog1: TSaveDialog 532 | Left = 721 533 | Top = 162 534 | end 535 | end 536 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uMain.lfm: -------------------------------------------------------------------------------- 1 | object frmMain: TfrmMain 2 | Left = 544 3 | Height = 569 4 | Top = 255 5 | Width = 1070 6 | Caption = 'DataFile v2 Editor' 7 | ClientHeight = 549 8 | ClientWidth = 1070 9 | Color = clBtnFace 10 | DoubleBuffered = True 11 | Font.Color = clWindowText 12 | Font.Height = -13 13 | Font.Name = 'Segoe UI' 14 | Font.Quality = fqCleartypeNatural 15 | Menu = MainMenu1 16 | ParentDoubleBuffered = False 17 | Position = poScreenCenter 18 | LCLVersion = '2.2.6.0' 19 | object Splitter1: TSplitter 20 | Left = 369 21 | Height = 524 22 | Top = 25 23 | Width = 5 24 | end 25 | object AddressBar: TEdit 26 | Left = 0 27 | Height = 25 28 | Top = 0 29 | Width = 1070 30 | Align = alTop 31 | TabOrder = 0 32 | end 33 | object Panel1: TPanel 34 | Left = 0 35 | Height = 524 36 | Top = 25 37 | Width = 369 38 | Align = alLeft 39 | BevelOuter = bvNone 40 | ClientHeight = 524 41 | ClientWidth = 369 42 | TabOrder = 1 43 | object KeyTree: TTreeView 44 | Left = 0 45 | Height = 471 46 | Top = 0 47 | Width = 369 48 | Align = alClient 49 | HideSelection = False 50 | Images = ImageList1 51 | Indent = 30 52 | PopupMenu = PopupMenu1 53 | ReadOnly = True 54 | RightClickSelect = True 55 | SortType = stText 56 | StateImages = ImageList1 57 | TabOrder = 0 58 | OnClick = KeyTreeClick 59 | OnContextPopup = KeyTreeContextPopup 60 | OnCreateNodeClass = KeyTreeCreateNodeClass 61 | OnDblClick = KeyTreeDblClick 62 | Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw] 63 | Items.Data = { 64 | F9FFFFFF0200010000000200000001000000FFFFFFFFFFFFFFFF000000000000 65 | 000000120000004E4F204441544146494C45204C4F41444544 66 | } 67 | end 68 | object panel_addKey: TPanel 69 | Left = 0 70 | Height = 53 71 | Top = 471 72 | Width = 369 73 | Align = alBottom 74 | BevelOuter = bvNone 75 | ClientHeight = 53 76 | ClientWidth = 369 77 | TabOrder = 1 78 | Visible = False 79 | object lbl_addKey: TLabel 80 | Left = 5 81 | Height = 17 82 | Top = 3 83 | Width = 165 84 | Caption = '%enter_key_or_root_name%:' 85 | ParentColor = False 86 | end 87 | object edit_addKey: TEdit 88 | Left = 5 89 | Height = 25 90 | Top = 24 91 | Width = 273 92 | Anchors = [akTop, akLeft, akRight] 93 | OnKeyPress = edit_addKeyKeyPress 94 | TabOrder = 0 95 | end 96 | object btn_addKey: TButton 97 | Left = 281 98 | Height = 25 99 | Top = 24 100 | Width = 88 101 | Anchors = [akTop, akRight] 102 | Caption = 'Add new key' 103 | OnClick = btn_addKeyClick 104 | TabOrder = 1 105 | end 106 | object btn_addKey_Cancel: TButton 107 | Left = 347 108 | Height = 19 109 | Top = 1 110 | Width = 22 111 | Anchors = [akTop, akRight] 112 | Caption = 'X' 113 | Font.Color = clWindowText 114 | Font.Height = -8 115 | Font.Name = 'Segoe UI' 116 | Font.Quality = fqCleartypeNatural 117 | OnClick = btn_addKey_CancelClick 118 | ParentFont = False 119 | TabOrder = 2 120 | end 121 | end 122 | end 123 | object Panel3: TPanel 124 | Left = 374 125 | Height = 524 126 | Top = 25 127 | Width = 696 128 | Align = alClient 129 | Caption = 'Panel3' 130 | ClientHeight = 524 131 | ClientWidth = 696 132 | TabOrder = 2 133 | object ValueList: TListView 134 | Left = 1 135 | Height = 469 136 | Top = 1 137 | Width = 694 138 | Align = alClient 139 | Columns = < 140 | item 141 | Caption = 'Name' 142 | MinWidth = 100 143 | Width = 200 144 | end 145 | item 146 | Caption = 'Type' 147 | MinWidth = 100 148 | Width = 100 149 | end 150 | item 151 | AutoSize = True 152 | Caption = 'Value' 153 | MinWidth = 150 154 | Width = 44 155 | end> 156 | HideSelection = False 157 | IconOptions.Arrangement = iaLeft 158 | PopupMenu = PopupMenu1 159 | ReadOnly = True 160 | RowSelect = True 161 | SmallImages = ImageList2 162 | SortType = stText 163 | TabOrder = 0 164 | ViewStyle = vsReport 165 | OnContextPopup = ValueListContextPopup 166 | OnDblClick = ValueListDblClick 167 | end 168 | object panel_addValue: TPanel 169 | Left = 1 170 | Height = 53 171 | Top = 470 172 | Width = 694 173 | Align = alBottom 174 | BevelOuter = bvNone 175 | ClientHeight = 53 176 | ClientWidth = 694 177 | TabOrder = 1 178 | Visible = False 179 | object lbl_addValue: TLabel 180 | Left = 5 181 | Height = 17 182 | Top = 3 183 | Width = 130 184 | Caption = 'Enter new value name:' 185 | ParentColor = False 186 | end 187 | object edit_addValue: TEdit 188 | Left = 5 189 | Height = 25 190 | Top = 24 191 | Width = 578 192 | Anchors = [akTop, akLeft, akRight] 193 | OnKeyPress = edit_addValueKeyPress 194 | TabOrder = 0 195 | end 196 | object btn_addValue: TButton 197 | Left = 589 198 | Height = 25 199 | Top = 24 200 | Width = 102 201 | Anchors = [akTop, akRight] 202 | Caption = 'Add new value' 203 | OnClick = btn_addValueClick 204 | TabOrder = 1 205 | end 206 | object btn_addValue_Cancel: TButton 207 | Left = 669 208 | Height = 19 209 | Top = 1 210 | Width = 22 211 | Anchors = [akTop, akRight] 212 | Caption = 'X' 213 | Font.Color = clWindowText 214 | Font.Height = -8 215 | Font.Name = 'Segoe UI' 216 | Font.Quality = fqCleartypeNatural 217 | OnClick = btn_addValue_CancelClick 218 | ParentFont = False 219 | TabOrder = 2 220 | end 221 | end 222 | end 223 | object ImageList1: TImageList 224 | Height = 24 225 | ShareImages = True 226 | Width = 24 227 | Left = 224 228 | Top = 120 229 | Bitmap = { 230 | 4C7A020000001800000018000000A50000000000000078DAFBCFF07F14120927 231 | 4D9AF49F184C6BF34F709E70A0B5FF88D533D975F24652C28558B5E4605A9B3F 232 | 3170E27E62C36542E9842743D9AFA3E68F9A3F6A3E6DCDA7A51D30F31F333E96 233 | A5B6D913EA26BC1D6D0D8C3CF8BB56E43F3198D6E69FE338E0406BFF11ABE798 234 | 4DC44652C28558B5E4605A9B7FC6CD9BE8F6CFE314ED2743D9AFA3E68F9A3F6A 235 | 3E6DCDA7A51D30F39F323E92A5B6D92FB355864DFB070027BED2B3 236 | } 237 | end 238 | object MainMenu1: TMainMenu 239 | Left = 296 240 | Top = 32 241 | object File1: TMenuItem 242 | Caption = '&File' 243 | object New1: TMenuItem 244 | Caption = '&New...' 245 | OnClick = New1Click 246 | end 247 | object Open1: TMenuItem 248 | Caption = '&Open...' 249 | OnClick = Open1Click 250 | end 251 | object N1: TMenuItem 252 | Caption = '-' 253 | end 254 | object Exit1: TMenuItem 255 | Caption = 'E&xit' 256 | OnClick = Exit1Click 257 | end 258 | end 259 | object View1: TMenuItem 260 | Caption = '&View' 261 | object Refresh1: TMenuItem 262 | Caption = '&Refresh' 263 | ShortCut = 116 264 | OnClick = KeyTreeClick 265 | end 266 | end 267 | object Help1: TMenuItem 268 | Caption = '&Help' 269 | object AboutDataFileEditor1: TMenuItem 270 | Caption = 'About DataFile Editor' 271 | OnClick = AboutDataFileEditor1Click 272 | end 273 | end 274 | end 275 | object OpenDialog1: TOpenDialog 276 | Left = 952 277 | Top = 32 278 | end 279 | object PopupMenu1: TPopupMenu 280 | Left = 224 281 | Top = 288 282 | object New2: TMenuItem 283 | Caption = 'New' 284 | object RootKey1: TMenuItem 285 | Caption = 'Root Key' 286 | OnClick = RootKey1Click 287 | end 288 | object Key1: TMenuItem 289 | Caption = 'Key' 290 | OnClick = Key1Click 291 | end 292 | object N2: TMenuItem 293 | Caption = '-' 294 | end 295 | object AnsiString1: TMenuItem 296 | Tag = 3 297 | Caption = 'Ansi String' 298 | OnClick = addValueClick 299 | end 300 | object test1: TMenuItem 301 | Tag = 4 302 | Caption = 'String' 303 | OnClick = addValueClick 304 | end 305 | object StringList1: TMenuItem 306 | Tag = 2 307 | Caption = 'String List' 308 | OnClick = addValueClick 309 | end 310 | object N4: TMenuItem 311 | Caption = '-' 312 | end 313 | object Boolean1: TMenuItem 314 | Tag = 5 315 | Caption = 'Boolean' 316 | OnClick = addValueClick 317 | end 318 | object N5: TMenuItem 319 | Caption = '-' 320 | end 321 | object N8bitIntegersigned1: TMenuItem 322 | Tag = 6 323 | Caption = '8-bit Integer (signed)' 324 | OnClick = addValueClick 325 | end 326 | object N8bitIntegersigned2: TMenuItem 327 | Tag = 8 328 | Caption = '8-bit Integer (unsigned)' 329 | OnClick = addValueClick 330 | end 331 | object N16bitIntegersigned1: TMenuItem 332 | Tag = 7 333 | Caption = '16-bit Integer (signed)' 334 | OnClick = addValueClick 335 | end 336 | object N16bitIntegerunsigned1: TMenuItem 337 | Tag = 9 338 | Caption = '16-bit Integer (unsigned)' 339 | OnClick = addValueClick 340 | end 341 | object Integer1: TMenuItem 342 | Tag = 10 343 | Caption = '32-bit Integer (signed)' 344 | OnClick = addValueClick 345 | end 346 | object N32bitIntegerunsigned1: TMenuItem 347 | Tag = 12 348 | Caption = '32-bit Integer (unsigned)' 349 | OnClick = addValueClick 350 | end 351 | object N64bitInteger1: TMenuItem 352 | Tag = 11 353 | Caption = '64-bit Integer (signed)' 354 | OnClick = addValueClick 355 | end 356 | object N54bitIntegerunsigned1: TMenuItem 357 | Tag = 13 358 | Caption = '64-bit Integer (unsigned)' 359 | OnClick = addValueClick 360 | end 361 | object N6: TMenuItem 362 | Caption = '-' 363 | end 364 | object Singlefloat32bit1: TMenuItem 365 | Tag = 16 366 | Caption = '32-bit Float (Single)' 367 | OnClick = addValueClick 368 | end 369 | object N64bitFloatDouble1: TMenuItem 370 | Tag = 17 371 | Caption = '64-bit Float (Double)' 372 | OnClick = addValueClick 373 | end 374 | object Currency64bit1: TMenuItem 375 | Tag = 18 376 | Caption = 'Currency (64-bit)' 377 | OnClick = addValueClick 378 | end 379 | object N7: TMenuItem 380 | Caption = '-' 381 | end 382 | object DateTime1: TMenuItem 383 | Tag = 19 384 | Caption = 'Date Time' 385 | OnClick = addValueClick 386 | end 387 | object Fontsettings1: TMenuItem 388 | Tag = 20 389 | Caption = 'Font' 390 | OnClick = addValueClick 391 | end 392 | object N8: TMenuItem 393 | Caption = '-' 394 | end 395 | object Binary1: TMenuItem 396 | Tag = 1 397 | Caption = 'Binary' 398 | OnClick = addValueClick 399 | end 400 | object Importfile1: TMenuItem 401 | Caption = 'Import file' 402 | OnClick = importfile1Click 403 | end 404 | end 405 | object N3: TMenuItem 406 | Caption = '-' 407 | end 408 | object Delete1: TMenuItem 409 | Caption = 'Delete key' 410 | OnClick = Delete1Click 411 | end 412 | object Delete2: TMenuItem 413 | Caption = 'Delete' 414 | OnClick = Delete2Click 415 | end 416 | end 417 | object SaveDialog1: TSaveDialog 418 | Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing] 419 | Left = 952 420 | Top = 88 421 | end 422 | object ImageList2: TImageList 423 | Height = 24 424 | ShareImages = True 425 | Width = 24 426 | Left = 960 427 | Top = 216 428 | Bitmap = { 429 | 4C7A0E0000001800000018000000AB1800000000000078DAED9D075453D9D6C7 430 | 1591A2B4190795711C452C888A0DDB38E08822A04857081D84D0091042090103 431 | 482F22828014A5090808585079F602232AD82B8A8208A83451C096FD9D138D83 432 | CCCC4B8159EF7DDF97BDD67FDD7BCF3DE777CFD9A7EDB0C2CD88117CE3DB3F6B 433 | 643259545656561F9D9E41AA473A3B6DDA34024A1F3B1CFCC99327ABA3C333A4 434 | C3489E48C7915EA274BD616A423552CDB265CBBEA3D3E923962E5D2A83AEDB91 435 | 0E0D13FF02D256E40F61CC47476974DD8C746C38E098C992939393A89494D436 436 | 94DC8DFC633A9C7C3737B7D1D2D2D2F628A90D299A4020480E279F4824CAA3CB 437 | 464141C1482D2D2D66DA70F215141494D1E5730D0D8D79ACB4E1E42F5AB4E83B 438 | F48CC5C84FC2FF04FFAF349C7C3131316B745985FA61FAFF263EDFF8C637BE0D 439 | 34148F3C3632322A182C151595B3363636190C066324008CC0E2C53083557EA0 440 | 2A2A2A348D8D8DF329144AD43FC52F2E2E36484F4FDF12121242FB27F8191919 441 | 366D6D6DE37D7C7C221212125C87937FFBF66D05B43FEE6069EEDCB93787C26F 442 | 6A6AFA09F7656F6FAF684F4F8F184EEBE8E8F8EEC3870F82F81CE71B0A5F5D5D 443 | FD586767A7D4FAF5EB8FE0F3EBD7AF2B6ED8B0E1B0B5B575E670F03D3C3CE25E 444 | BC78218DF6C4542A951A8A7D5F505060646565B56738F8313131E4376FDE8CF5 445 | F2F28A76707048C6BEC1E313F7EB70F0D969A8FCE0E0E0001D1D9DB2D6D6D609 446 | 26262679D84FA74E9D5A8DD387838FFB11FB1BCFA7C0C0C020EC23FC2C14A3C7 447 | 0C071FC5E3496A6A6A950F1E3C9881E2CEA3BABABAA5B80F868B8FC51AEB9F3E 448 | 7D1260AD6BEFDEBD131A0AFFEFD6CFC1929393ABE7EF367CE31BDFFE89CFBA5B 449 | B66C992F2E2E7E4B5D43C3E2DF7D0EE6F4F3E4ECD9B37351CCB187A5B56BD75A 450 | A235AC10ED03F3E7CD9B973AF0DE60C9CBCBE7B1E36396BBBBBB8093B3B33096 451 | 8B8B8B004A2BA0D16823D01E3C1249E0AF84CB4C4365D9F1A74F9F5E60696535 452 | 1D318BA7CACA16A33D710EE6B3F38B9F9F1FAE5B01277C9C77F3E6CD7AEBD4D5 453 | 8D58E5869B4F201034514CB571B8F9D8FF24E44B0747C71FB6D8DAFE80E2AB91 454 | B89C3FF23F19F91F49E0AF44E2D0FF780C7C337ED4D4381E3F68ECE5F13AFE35 455 | 8669FCF38D6F7CE3DBFF97F861B07C7D7DA5D01A5E86B2E23F9CC0C891233F29 456 | 2929EDE674FD64C70F0808186D6B6BBB4445452578D4A8517D7A7A7A56E833E5 457 | 7C4EF9AEAEAE33ECECEC16232DC342ACBF14FAECA5377AF4E83728BF02CAB704 458 | 49099765C79F3871E2F51F7EF8E18EB4B4F4AD7F276D6D6D07CCDFB46993E984 459 | 0913EAC68D1B77171D6FB0E30B0808BC476DDF666E6EAE8A18568686869BF0F9 460 | 60A1F8C200F39D9D9D15D1F56FCACACA415FFAE4DF1AEAAFF7A84E042A953A06 461 | F5DB2E5555D500F4B97DD4E07E4071D17ACCF7F6F696C1D7B81EDCF0D17EAEAC 462 | A0A0503663C68C63A88E0AC3C5476382C947F50E44E3F0108A872A7574746C86 463 | 91FF6ED5AA55619A9A9A5E688C6C32303030D7D2D272B3B4B45C3750BCFA5F46 464 | 46A6168F9FF1E3C7DF1CA05B48B75942E3E736AFE3078F612291B80849098F69 465 | 2C74BE94351F587382D7F1CFC9FC4531D7325EE72F8FEB4F2A3F7EE31BDFFEEF 466 | DB468D75EE634445DB58F39F538D1923DAA6ADA14E62C7E785CDD2D83163DA38 467 | 68022B3F63F6CC99074D37191A59118CB5E7CF51281044EBE57869E99BDA9A1A 468 | 6ED626C6DA9A6B54FD848585BA063D8763BEFC8CE987F13356FFBA329CE4EC34 469 | 7BE278E99B3FFF34E9E22F4B97EC5C3C5F310BA7292D989FC9239FA99F7EFCF1 470 | 92F28AE5B1662684F59212124F59E9B82D1604C246B555ABE843E113F4F5CC02 471 | BC3C7FDCB04E8D8CF72B56FAD49F279FF326B94D9B2433F1CA50F8AC7E0BF1F3 472 | 919A3D7306FEBED2A71F274EA8F570B49FBF628952E25FE4E7888FE2B877D3A6 473 | 4C39FDBD9454FDCCE97247693EDEDFCF94933B3A79D2A46A47A29D9291AE8EE5 474 | 0C39B963D2E3C6DDC17DC52D5F5858B84BEDB7555BAD2C2D57999B99AD45FDB9 475 | 67948040FFCA15CB634C08840D2CFDBA7225FE2ED3475EFC3372C4880FE3A57F 476 | B83DEEFBEF1E7C9D47A2222F050505DF20BDC542EDECE7A5FE2C292A2814213F 477 | 27FDF0FDF7F798B12FAABFB8D8D866E5E5CB63F19157FF0FE41B6CDC60BF7EED 478 | 1A1F34566BD6ADFE2D60DC77DFDDB7B7B2583D01CDB5E1E0FFB264C94E3CA7E6 479 | CC9A556AA8BDD14E5444A4C3585FD7EC6FD6126EE7578DAAF2AFDB7E5BF94B24 480 | 9A5F8DCB162F4A41F3A007CDE9B01F27FE69ECB3E57F59A3785DDF5AD9AFCFEA 481 | A42FF9B8666B6B6890F83B1CDFF8F6F726B454C85DC25DA24DCA5F0AB891B8BB 482 | 789BD01221B6F38B17F6C067B0E30F2E33D6726C95DC66393FD42E4F09378967 483 | ACF4891613F317182E301277156F1C989F1BBE98ADD88D957A2B95E436C9F98C 484 | 351F7B569222F986554F2939A9B9B64EB6926276623779E14B7849BC965595D5 485 | 193D67B4E974CBE951630CC694A0B42E09B24497E05C4173A15F84FC8C5D8C15 486 | 79E58B3B88DF47E5E70BCE16DC8CF8B193E74C9E3AC371C65E515DD102C19982 487 | 3A625BC4EA86C4B717BF6BEC6C3C4FCC4AAC1A5F2F202CB09E6F3CDF6AD49451 488 | AAA3268F521E3575D49ACD669B2546CF1B6D29E12AD1C8837FBAB17F84570AD3 489 | 501F3649CD945A2CAD231D29662D7659CC42EC82A88EE83E23A2911CF25BB1A4 490 | B7E45B5EFA57DC45BC51564D769331D97895B0B2709084A744FBD77BAEE2CF54 491 | 5C545CC49DC51B781D3F5F9EF1548C28765BD24FF223B35DA87F25A9920CA44F 492 | A8DEBD28FDD350F863F4C71489A88B2489D98BDD93F4957C2FB2462446DC4DBC 493 | 59788D702C6A43F3E0FCBCF0851608D90BAD10F241BEAF115A291420E620761F 494 | F5F3EAC16387E7FAAF13D98935C6704C297A961DEA870E342FCC98F36C887C5C 495 | 67915522DB84570B474AB848348A6A8AA6A079DC23FC9B7098988DD8156EF943 496 | 5CDFD8C63FA3978C268993C45BB966A332A39546F3E31FBEF1ED3F6C2AFA0442 497 | 6ACDC387E52F3E310EBE64003BE17CA9350F1EE2729CF011BB9E13EE60E1729C 498 | F059F53EF08C01A1490C20AC6680C91A06842533A0AC950171FB1860A1F9392D 499 | 3C9501A5CD7FB483133EAB3E850F191018014CAEA73B7ACE2A80DC6B00D6BA00 500 | 642F06B8BB31C05C0320EFC61F6DE0865FDE86DA80EAB62D11D55595012EB6A8 501 | AECF19B0BF9E0105F7D1B51D031CAD3E5FF3C267292E9F01440280A325038A1E 502 | 7FF65B6004F61B40DAE96FF372C3CFBDCE0057070644A433C06F2B038CB17F50 503 | 5A480203B41500E8310CD87B093DAF89377E4923EA5FE41B4B2DE4731D60F635 504 | 66B9D802986B0233DDD11220EB32EFFEC1FECEBDD18FD407652D78ACF443FEDD 505 | F7907F87C154C1BDCF7986E2FFD4531721E55F6799E7995575C8478F21E3C255 506 | 287EDAFDA739C00B7F47E941F0A2BA41E4DE4CD879A80212CA0E8207D90E769F 507 | AE1A1E3EE2C515EE075A782004468540027A5EF0CE58D877EB294FFCC1EB4EE2 508 | 91E3400DF103FAF64888DC93094915FF42FCEDC86F17FEB40EFD37AC3FFFF4FA 509 | C937BEF1ED9FB3B526D6D6E9754F9E70BA2EE0BC6B08D6D69CF251FEA7DFCE7F 510 | B487B47CCBC47B0ADE87F13DD63338E5B31838D6493CC8005335007B13F8CADE 511 | 771BED991B80199BE0736ED6E681FCECAB9FD9543A40D2E13FF8C1F10CD09D3F 512 | 747EC20106AC9F0E6081F6712D798094E30CC8B9C6804D2B507CE501282602C8 513 | A9E39DBFA384013A733FC76756DAC08C79A8740668CA02E82D04D83013B5EB10 514 | EFFC9C5A06332E219A02B3CEB8FE38FED97D920141B1281E5201C8BEC23B1FC7 515 | 877B7E67405426406239EAEFB63F58793751FB8A811923F1CA6709C722458FDB 516 | A1A4E90D645DBD07FB1FB5A3D8E4354F7BFB5FF1E9F151109EBE1BF56D3D241F 517 | 3F05E169A910B7BF68D8F8C109B1CCB8C10FC510F83C3A27078DD763C3C6DF1A 518 | 1B067EC17E109214CFE427941D8688CC749EF983D787B296F748EF507F7F44C7 519 | 7E34AF3FA038B4F7DB35A896F3F501AF55DCAF6F56D6FC9D816F7CFBCF5A6AA4 520 | 6B00CD55BB8BE2A00B14471DF076DCC8143E277F4DD346D2621E713E2F249AAB 521 | 4E676A941B8D1DDFDF55A7CB89680E8E442B70B137050F0703F0447245018493 522 | BD054A330377874DCC74928311339F03D1069C511954AF4E767C2F073DB0276E 523 | C1E518DBFCEC8E65C638BBEC8D73B58EA45A96793818BFA37998DF490977F6C7 524 | 6949A1C46D1E4EA63DF6888F4541ED61C7273BE87FE587F8D91D8FF1DB549114 525 | 6C9198104E5918E869F4804EB1B81C47B74DDD4E33DE9F104E9E1F45B3297622 526 | 5A30DB4071D4E5906F0B442417E493502F83EB8974B3B4A820B7CDBE6EC62D2C 527 | 1FF93AEBBCDB15E1AABB23981887FDC939DFE00BDF0E9C11273DDACDA378B7BF 528 | 5C4AA86DA897D3A63E47FBCFFD124AD95CB3673B6576A0A7C91D07A23597F5DF 529 | 82F85B98F5A4A0B113E4A6D67D202D607C98AFD9510F07C34F74F2E65BF9899E 530 | CA3B02CDB2DD1C8C9979EDB9E43BD95BBFA77B6FF99DEEAEFB3CDA57AF7A57AC 531 | BF4C84AFD1896D6483BAEDA19E2AE951CE1E913E0657A8EEE68F50FD19DCF16D 532 | C0CDC9E675C236B7E0609A875A90BFBB6634CDBC88E2A8F77E1BD536792B95A4 533 | 8D154875D7F6253B873911AD3E71EB1F2C577BD38F740FC386ADEEFA4D2434E6 534 | F178F77531ECF471D2EBA338E9F77B3A6DEE77B6B77A87C602B3FE5E5CF52F11 535 | 70BF45F8DB14C7D32DD369EE840654FF0FF1210E69FE6E062FB7073BA6925D2C 536 | 5AF138C079717DBC1CF5B8E4DB4004D5AA382DC2969A1CBA252ECC4BAF2E699B 537 | 5D6CB0BB7673768297B6AFBBF583A1F07199707F9BA244BAE9EE9D7493F438AA 538 | 61795AA42325D0757D4F7A34C991EC6CD18EF371C7D7FB861FE0655D9B10629F 539 | 8CE6511ACDCDA03966AB7D9EB7B37EEF8E6D2E8954B2DD756EEBEFEFA2D389E7 540 | 3BCE8FFD8FFA18F5EB66A6F05877B52730E735099DE323CE83F372BABEA546BA 541 | D1703EBC567D5E8BB5C06780BCBF88758EF3E0BCB84C6A14C99FBFC3F18D6FFC 542 | F8871FFFF0E31F7EFCC38F7FF8F10FDFF8C637967DFD3FD38880A901BBA85681 543 | 05BEA5F472EFBBC115DE3D21C7BC3F60E17394760FDF0BD8E56F15101E30859B 544 | FF3FA54505CCA417FB54471CA6F4C51EA640DCDF08DFC379705E5A54E04C4EF8 545 | 0111815371FED8835E907B3C072ED6D540E5852AB8507B092A2F5E80CAAAB350 546 | 72AA1C8A8E57C0A9CBE720A7220F62CAC980CA5405A2B26CF9C9542B5CA718C4 547 | CF3A54082FDB3BA1EEC61378DAD8092F5EBC81F6577D4C353C7E0DDD5DFD9056 548 | B297C9C765B03FD9F1030B7DCB70BB630F79C18EE22878D6D20A67ABAE416FEF 549 | 7BA8AA6E80572F7BA1B3A30F1EDCEF808EF63E28A82867F27199C042BF3276FC 550 | A0729F7B5F7D5C1C022595E590519207A59595905B5E0447CF9D809317CFC3DE 551 | 92423872A612520E244334E2E3FCB82C3B7EE899CA9ED82341CCFA6FCB7701D7 552 | 30632038AB8386DE72D032FC95A98D0465B0F0D402F718146715B832F3E232B8 553 | 2C5BFF9F6BFE1476F212B8466C8155EA0B4076EA44F871FCF7A0B17615E46665 554 | 4049E13ED0D552874913C7C1F4E9936095C62254071BC06502CE3FFFC8967FB6 555 | F523BDA801CC2D1261D9E2F520FBF314F871C238D0DFA8015919A95098B71734 556 | D6A830D364274F81A58B34C0CC341E70191A2ACB8E4FDBF7B0C7875A0B148F2B 557 | 40723A051626BB4167BD3FAC5B6D059A6B4C4173AD19ACFDCD127436D098F748 558 | CE2799797DA8751080CAB2E3932817EFE1FC993955507AE83A84479D84AC7D17 559 | C1D7FB02242657436AC645080BBB0815953720BBF02C1495D6426ED10520932E 560 | 012ECB8EEFE173BC14F31B9A9F40F3AB06D89D5301AD2F5E41DEFE6A344EEFC0 561 | C973D7E1D8893A78F6EA099CA93D017DFD6FE1F8D9CF7C779F63A5ECF814EA1E 562 | 2B0F8FCB7D8F9A1EC3ADFBF5507BB7163DE729B4BD7C09F5CFEAE14143031C3B 563 | 771ADADA5BA0ADF319F422FEC9EA8B4072FFBDCF1B95651B9F04464F25799DAE 564 | 3E70F43484451D82B2A3E7217DCF3928ABB800474E9E87D3E7EBA0F2F42538F7 565 | FB15282C3B01672ED44161E96970255756F907464DE5647DF30B889DE9463E51 566 | E5E171A98F4CAA012FF7CFC23EF072BFF4E5FC77E611D5BB97E475B28A1A183B 567 | 939BFFDF47759982DB4B423E75F3BA78D7957CB5C7957CEDC3675DEDC169F89E 568 | 3735D30AE7E5FFFF3EDFF8C6DE72F30A0433F616889DBAF656D538ACE5A89AEF 569 | F36B9AFECF2F0566B5C7A6E59F9937F87D1989BB760B71F37EB3A09CF6488BA8 570 | B68AD0CCDB449FD09C6521B1B9B37DC3B2976CCD7E15AB4B6F3997917B68128B 571 | 95907E70B6774A4364F4F6D4EF38E58717746C9BB5A5F1AD5B549527AB4C6874 572 | CAC483E75B56ED286AB2B78F7FB1FF50758FEECEB24E9FEC7FBD76D0DEDA72B9 573 | E04C8F4562792725B3E08C023BFEC6C0E755B1259D0159A557976076C5A9BA9F 574 | 5D773C8E2F387C55313E71F7187C3FB2B083BED2A3B921B6B8732BE2D7F865BE 575 | 4A94B36CFCB829A4F5143BBE2AA5F9666054EE02CCAEAEB921B6D8B9A93969FF 576 | 5D03565B2C22DB0EA75574BBCDB269ECDB9ADD1E9B54DE45360C6E393DCDB211 577 | 90D87E3F532BE07935F63B66A5A4A609D86E7F51448FCE5564F175E9CFCF251E 578 | ECF2C23CF48C5E2597A6E772568D1FBEF0D97EFE0DCE6D8F0ACC7A15979A9A36 579 | 12F3F61CEFB68F4FDE37293A265620B9F89E9E6574DBA1D3BF3F9A5672B46EF6 580 | 4085EFB963AB60D7F89A1D3FA3E0CC1C3D7ACBF904D4973B90BFD3F6E44B4445 581 | C78E4A29BEA7A34E6DAEADBCFA56939E7ECBC537B2543D7EF7C1B90E6117FD22 582 | E352C739D3B2D7CD253675B1E3E7ED2B143C51FB56CD26A6AD7463604B954554 583 | EB41BDA0E767D0983D927BE4DE9AA4E43461D7C82AB257D8810DB12907E75BD3 584 | 2F0445C4A64A73CACFCC2E184B4A7E99159975C79A1A9EBDB8E0CC6B8B2397DE 585 | E814949D9B7CE1CAE39F77A7A58F3C75E1FAF8C292231207CA2B444F9CBB2693 586 | 9C92368A1B3EF2F111A7F02A1FEC7F9FF457A93BCABAFCC9C1D92A6B7C9A6FBF 587 | 7EFB71AC47CACBBDDEF1D58EA9855754AD625E1CDEBE6BDF645EF9E1F1B933E3 588 | 92F226D3436224A961394AFBF20B05C2B6E7CE0A894A918989DF2D151C933B37 589 | 3C224698577ECA912E8F920B3D264131B98A9EA92F33DEF67D1441E3D32736AB 590 | 46BBE070ED8288C28ED05D69F9D2BCF2734FBEDE5251F35637343E4F3E38AF3D 591 | AAB7FF93705665B7C3AEFCCB6B4B8ED52AEC3AD44549C9C8E778FCA0F131DA22 592 | EC51AE8E4F6D9EDBD66C55123D7B35278A2DEE085CE2DAD4C449FC93517CE557 593 | 65CF67F7E63B34B52D70E44C2B484D8F520E77BBF37738BEF1EDEF6DEB56FA08 594 | 0F8FD8E9EBD61DDBADA878F3D9DCB90FFA9494AE5C3733CBB1F4F30B951CEAFB 595 | 5D315B59F9FC7179F97AC6F2E58FC1C5A5191415EB61CE9C3BDD3A3AE52143E5 596 | ABAB1FDF8DD9345A2B3434F44353533FDCBAF516162E7C04F2F20F3F393BEF54 597 | 1A0A5F51F1D633C487ECEC0EC4EF83C2C20EA0D15A60D1A27AC4BFDF6F6A9A67 598 | 3914BEBCFC837ECC3730780A9999EDF0E4493F7A4E4FB7B9C981ED64A29B6990 599 | B5CAAE2093B967830873AA822C57E4D249A6BA747FCA384EF9B82F313F23A39D 600 | D986C2C217DD393947A9C1766B77061BFCDC12A23701062A587F525790F99212 601 | BABF8F14277C53D35CAB3973EE766FDCF804F2F33BE1D891933B103B91C50B37 602 | 9A02C96E2A90EEAD0109C4C55F9F1364BAB0824EF59261C7F7F30B93D4D62E0B 603 | C17DA9A0F0A07FABA7BB59B0E194AFF5BE782011DA9EDE838EB6467870F5E480 604 | 76C8F4D29DF41C38FD7CEDE4B45309B5C532C84665172E1F6A38090A23ACA1EF 605 | 6D0F9C29888114F7D59045D3FFC6574146F2B59CF2590A3299770E974D725E01 606 | 8F6F9C87DE37DD507FED2CDCAE3A84F87ADFF685DEC43EEEF973AA71D9ED368A 607 | 70BFE63874BE6882EA83A97028890C91267283F813DE73CDB75C9E8BCB469BCD 608 | 447E8986B7AF3BE15F5921904ED180F0CD53BEE56F9A56CF2D1F8F6F3406BB71 609 | F948C23468BC7B19BA5EB5205F5D84869B55037DF3814ED408E49AEFEF3D2EC8 610 | 6249098BB3D3611914C7D8C3E1640AE4D28DFEE85B63F93ABA8FAB3CD77CE633 611 | 7CA4824C175404EBC9F4FE697EA17A33D9DE2E7386F4FE463FB20CDD59CF21C8 612 | 78562D62F6A2BEFC10B469DA43EC13BA8F8B3CFFEF3F7CE3DB7F870DFCFD213F 613 | 3F3FFCFE38303636DEC7C9EF1571C37FFFFEFD28191919E63BDE848484FA5EBE 614 | 7CF9FD70F2CBCBCBB5F0E5D2A54BF1EF93427C7CBC1BEB5E6767A7447D7DFDB4 615 | 376FDE8CE195AFA3A3532A2020F0F1E1C387D3A4A4A43A141515AF31180CE63D 616 | 0D0D8D0A9CD5C9C92991177E4B4BCB044141C1F7EB50A08BAFEDEDED77E15B35 617 | 35354A8D8D8D3FE1E7E26BFCDCDEDE5E116EF9919191147C4A2291B6575656AE 618 | 0D0F0FF7C6D72E2E2E09C1C1C1F87B62A0A5A575101F73737309DCF0B10F66CD 619 | 9A85DF6BF8A7F7BCC5C5C5B9CBCACA3EC2FDDEDADA2A8DFABD5F5555F50437FC 620 | F3E7CFFF8259CACACA678A8A8A0C58221008B9050505CCF73C53289448CCD3D7 621 | D72FC2EF087EF4E8912CA77C6B6B6BFC9B4F505C5CAC37B0EFD05811353131C9 622 | C5F7C86472744A4A0AD1C2C2620FBEA6D168C19CF2172D5A7479C1820557DFBD 623 | 7B377A20BFA3A3434A4444A4F7AFFCF6D34F3F3DFDF8F1A300B7F377A0121313 624 | 9DF06D6767E7846BD7AE29B2B471E346E6FB942B2A2AD487C25FB870217E1FE1 625 | 27341FE406FD261EE682A1A1E17E5EF9DDDDDDE26A6A6AC7D07CDA39F81EF60B 626 | EE673D3DBDE2A1F0CDCCCCB24C4D4D73FE4E44223199BF3BFCFFB2FF015AAE81 627 | 0C 628 | } 629 | end 630 | object FontDialog1: TFontDialog 631 | Font.Color = clWindowText 632 | Font.Height = -11 633 | Font.Name = 'Tahoma' 634 | MinFontSize = 0 635 | MaxFontSize = 0 636 | Left = 988 637 | Top = 393 638 | end 639 | end 640 | -------------------------------------------------------------------------------- /FreePascal_version/DataFileEditor/uMain.pas: -------------------------------------------------------------------------------- 1 | unit uMain; 2 | 3 | {$mode objfpc}{$H+} 4 | 5 | interface 6 | 7 | uses 8 | Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls, 9 | ExtCtrls, Menus, DateTimePicker, 10 | datafile, u_extended_treeview; 11 | 12 | type 13 | TfrmMain = class(TForm) 14 | ImageList1: TImageList; 15 | MainMenu1: TMainMenu; 16 | File1: TMenuItem; 17 | New1: TMenuItem; 18 | Open1: TMenuItem; 19 | N1: TMenuItem; 20 | Exit1: TMenuItem; 21 | Splitter1: TSplitter; 22 | AddressBar: TEdit; 23 | OpenDialog1: TOpenDialog; 24 | PopupMenu1: TPopupMenu; 25 | New2: TMenuItem; 26 | Key1: TMenuItem; 27 | N2: TMenuItem; 28 | test1: TMenuItem; 29 | N3: TMenuItem; 30 | Delete1: TMenuItem; 31 | SaveDialog1: TSaveDialog; 32 | RootKey1: TMenuItem; 33 | Panel1: TPanel; 34 | KeyTree: TTreeView; 35 | panel_addKey: TPanel; 36 | lbl_addKey: TLabel; 37 | edit_addKey: TEdit; 38 | btn_addKey: TButton; 39 | btn_addKey_Cancel: TButton; 40 | Integer1: TMenuItem; 41 | Panel3: TPanel; 42 | ValueList: TListView; 43 | panel_addValue: TPanel; 44 | lbl_addValue: TLabel; 45 | edit_addValue: TEdit; 46 | btn_addValue: TButton; 47 | btn_addValue_Cancel: TButton; 48 | Boolean1: TMenuItem; 49 | AnsiString1: TMenuItem; 50 | N4: TMenuItem; 51 | N5: TMenuItem; 52 | N64bitInteger1: TMenuItem; 53 | N32bitIntegerunsigned1: TMenuItem; 54 | N54bitIntegerunsigned1: TMenuItem; 55 | N6: TMenuItem; 56 | Singlefloat32bit1: TMenuItem; 57 | N64bitFloatDouble1: TMenuItem; 58 | Currency64bit1: TMenuItem; 59 | N7: TMenuItem; 60 | DateTime1: TMenuItem; 61 | Fontsettings1: TMenuItem; 62 | ImageList2: TImageList; 63 | Delete2: TMenuItem; 64 | FontDialog1: TFontDialog; 65 | N8: TMenuItem; 66 | Binary1: TMenuItem; 67 | Importfile1: TMenuItem; 68 | N8bitIntegersigned1: TMenuItem; 69 | N8bitIntegersigned2: TMenuItem; 70 | N16bitIntegersigned1: TMenuItem; 71 | N16bitIntegerunsigned1: TMenuItem; 72 | View1: TMenuItem; 73 | Refresh1: TMenuItem; 74 | Help1: TMenuItem; 75 | AboutDataFileEditor1: TMenuItem; 76 | StringList1: TMenuItem; 77 | procedure New1Click(Sender: TObject); 78 | procedure Open1Click(Sender: TObject); 79 | procedure KeyTreeDblClick(Sender: TObject); 80 | procedure KeyTreeClick(Sender: TObject); 81 | procedure Key1Click(Sender: TObject); 82 | procedure Delete1Click(Sender: TObject); 83 | procedure KeyTreeCreateNodeClass(Sender: TCustomTreeView; 84 | var NodeClass: TTreeNodeClass); 85 | procedure RootKey1Click(Sender: TObject); 86 | procedure btn_addKey_CancelClick(Sender: TObject); 87 | procedure btn_addKeyClick(Sender: TObject); 88 | procedure KeyTreeContextPopup(Sender: TObject; MousePos: TPoint; 89 | var Handled: Boolean); 90 | procedure btn_addValue_CancelClick(Sender: TObject); 91 | procedure addValueClick(Sender: TObject); 92 | procedure btn_addValueClick(Sender: TObject); 93 | procedure ValueListContextPopup(Sender: TObject; MousePos: TPoint; 94 | var Handled: Boolean); 95 | procedure edit_addKeyKeyPress(Sender: TObject; var Key: Char); 96 | procedure edit_addValueKeyPress(Sender: TObject; var Key: Char); 97 | procedure Delete2Click(Sender: TObject); 98 | procedure ValueListDblClick(Sender: TObject); 99 | procedure importfile1Click(Sender: TObject); 100 | procedure Exit1Click(Sender: TObject); 101 | procedure AboutDataFileEditor1Click(Sender: TObject); 102 | private 103 | { Private declarations } 104 | public 105 | { Public declarations } 106 | df: TDataFile; 107 | procedure CreateNodes(str:string; path:string = ''; nodeparent:TTreeNode = nil); 108 | procedure LoadHive; 109 | procedure LoadValues(section:string); 110 | procedure EditValue(section, identifier, datatype: string); 111 | end; 112 | 113 | var 114 | frmMain: TfrmMain; 115 | 116 | implementation 117 | 118 | {$R *.lfm} 119 | 120 | uses uEditValue, uDFKey, uAbout; 121 | 122 | const LABEL_ADDKEY = 'Enter new key name'; 123 | LABEL_ADDROOT = 'Enter new root key name'; 124 | 125 | procedure TfrmMain.CreateNodes(str:string; path:string = ''; nodeparent:TTreeNode = nil); 126 | var li:TTreeNode; 127 | s,s2, section:string; 128 | p:integer; 129 | begin 130 | p := Pos('/', str); 131 | if p > 0 then 132 | begin 133 | s:= Copy(str,1, p-1); 134 | s2 := Copy(str, p+1, Length(str)-p); 135 | 136 | if path <> '' then section := path +'/' + s 137 | else section := s; 138 | 139 | li := GetNodeByText(KeyTree, section); 140 | if li = nil then 141 | begin 142 | li:= KeyTree.Items.AddChild(nodeparent, s); 143 | li.ImageIndex := 0; li.SelectedIndex := 1; 144 | TDFTreeNode(li).Section := section; 145 | end; 146 | 147 | if s2 <> '' then CreateNodes(s2, section, li); 148 | 149 | end 150 | else 151 | begin 152 | if path <> '' then section := path +'/' + str 153 | else section := str; 154 | 155 | li := GetNodeByText(KeyTree, section); 156 | if li = nil then 157 | begin 158 | li:= KeyTree.Items.AddChild(nodeparent, str); 159 | li.ImageIndex := 0; li.SelectedIndex := 1; 160 | TDFTreeNode(li).Section := section; 161 | end; 162 | 163 | end; 164 | end; 165 | 166 | 167 | procedure TfrmMain.LoadHive; 168 | var sl:TStringList; 169 | i:integer; 170 | s:string; 171 | begin 172 | KeyTree.Items.Clear; 173 | KeyTree.SortType := stNone; 174 | 175 | sl := TStringList.Create; 176 | 177 | df.GetSectionNames(sl); 178 | 179 | KeyTree.Items.BeginUpdate; 180 | for i := 0 to sl.Count-1 do 181 | begin 182 | s := trim(sl.Strings[i]); 183 | if s <> '' then 184 | begin 185 | CreateNodes(s, '', nil); 186 | end; 187 | end; 188 | KeyTree.SortType := stText; 189 | KeyTree.Items.EndUpdate; 190 | 191 | 192 | FreeAndNil(sl); 193 | end; 194 | 195 | procedure TfrmMain.LoadValues(section: string); 196 | var sl: TStringList; 197 | li: TListItem; 198 | i: integer; 199 | // used to process entry values 200 | f: TFont; 201 | v: Int64; 202 | w: UInt64; 203 | d: Double; 204 | dt: TDateTime; 205 | str: string; 206 | begin 207 | ValueList.Items.Clear; 208 | 209 | sl := TStringList.Create; 210 | 211 | // use this if you don't need data type information 212 | //df.GetValueNames(p, sl); 213 | df.GetValueNamesAndTypes(section, sl); 214 | 215 | ValueList.SortType := stNone; 216 | ValueList.Items.BeginUpdate; 217 | 218 | for i := 0 to sl.Count-1 do 219 | begin 220 | li := ValueList.Items.Add; 221 | li.ImageIndex := 0; // set default icon to unknown 222 | //li.Caption := sl.Strings[i]; 223 | li.Caption := sl.Names[i]; 224 | //li.SubItems.Add( df.GetValueTypeAsString(p, sl.Strings[i]) ); 225 | li.SubItems.Add( sl.ValueFromIndex[i] ); 226 | // li.SubItems.Add('data value: to do'); 227 | // li.SubItems.Add(sl.Strings[i]); 228 | if sl.ValueFromIndex[i] = 'Unknown' then 229 | begin 230 | li.ImageIndex := 0; 231 | li.SubItems.Add('(unknown data type)'); 232 | end; 233 | if sl.ValueFromIndex[i] = 'Stream' then 234 | begin 235 | li.ImageIndex := 1; 236 | li.SubItems.Add('(binary stream)'); 237 | end; 238 | if sl.ValueFromIndex[i] = 'Strings' then 239 | begin 240 | li.ImageIndex := 1; 241 | li.SubItems.Add('(string list)'); 242 | end; 243 | if sl.ValueFromIndex[i] = 'Boolean' then 244 | begin 245 | li.ImageIndex := 10; 246 | if df.ReadBoolean(section, sl.Names[i],false) then li.SubItems.Add('TRUE') 247 | else li.SubItems.Add('FALSE'); 248 | end; 249 | if sl.ValueFromIndex[i] = 'String' then 250 | begin 251 | li.ImageIndex := 3; 252 | str := df.ReadString(section, sl.Names[i], '(empty string)'); 253 | if Length(str) > 30 then str := Copy(str,1,30)+'...'; 254 | li.SubItems.Add( str ); 255 | end; 256 | if sl.ValueFromIndex[i] = 'Int8' then 257 | begin 258 | li.ImageIndex := 4; 259 | v := df.ReadInt8(section, sl.Names[i], 0); 260 | str := IntToStr( v ) + ' (0x'+IntToHex(Int8(v))+')'; 261 | li.SubItems.Add( str ); 262 | end; 263 | if sl.ValueFromIndex[i] = 'Int16' then 264 | begin 265 | li.ImageIndex := 5; 266 | v := df.ReadInt8(section, sl.Names[i], 0); 267 | str := IntToStr( v ) + ' (0x'+IntToHex(Int16(v))+')'; 268 | li.SubItems.Add( str ); 269 | end; 270 | if sl.ValueFromIndex[i] = 'UInt8' then 271 | begin 272 | li.ImageIndex := 4; 273 | v := df.ReadUInt8(section, sl.Names[i], 0); 274 | str := IntToStr( v ) + ' (0x'+IntToHex(UInt8(v))+')'; 275 | li.SubItems.Add( str ); 276 | end; 277 | if sl.ValueFromIndex[i] = 'UInt16' then 278 | begin 279 | li.ImageIndex := 5; 280 | v := df.ReadUInt16(section, sl.Names[i], 0); 281 | str := IntToStr( v ) + ' (0x'+IntToHex(UInt16(v))+')'; 282 | li.SubItems.Add( str ); 283 | end; 284 | if sl.ValueFromIndex[i] = 'Int32' then 285 | begin 286 | li.ImageIndex := 4; 287 | v := df.ReadInteger(section, sl.Names[i], 0); 288 | str := IntToStr( v ) + ' (0x'+IntToHex(Integer(v))+')'; 289 | li.SubItems.Add( str ); 290 | end; 291 | if sl.ValueFromIndex[i] = 'Int64' then 292 | begin 293 | li.ImageIndex := 5; 294 | v := df.ReadInt64(section, sl.Names[i], 0); 295 | str := IntToStr( v ) + ' (0x'+IntToHex(v)+')'; 296 | li.SubItems.Add( str ); 297 | end; 298 | 299 | if sl.ValueFromIndex[i] = 'UInt32' then 300 | begin 301 | li.ImageIndex := 6; 302 | w := df.ReadUInt32(section, sl.Names[i], 0); 303 | str := format('%u', [ w ]) + ' (0x'+IntToHex(UInt32(w))+')'; 304 | li.SubItems.Add( str ); 305 | end; 306 | 307 | if sl.ValueFromIndex[i] = 'UInt64' then 308 | begin 309 | li.ImageIndex := 7; 310 | w := df.ReadUInt64(section, sl.Names[i], 0); 311 | str := format('%u', [ w ]) + ' (0x'+IntToHex(w)+')'; 312 | li.SubItems.Add( str ); 313 | end; 314 | 315 | if sl.ValueFromIndex[i] = 'Single' then 316 | begin 317 | li.ImageIndex := 8; 318 | d := df.ReadSingle(section, sl.Names[i], 0); 319 | str := FloatToStr( d ); 320 | li.SubItems.Add( str ); 321 | end; 322 | 323 | if sl.ValueFromIndex[i] = 'Double' then 324 | begin 325 | li.ImageIndex := 9; 326 | d := df.ReadDouble(section, sl.Names[i], 0); 327 | str := FloatToStr( d ); 328 | li.SubItems.Add( str ); 329 | end; 330 | 331 | if sl.ValueFromIndex[i] = 'Currency' then 332 | begin 333 | li.ImageIndex := 12; 334 | d := df.ReadCurrency(section, sl.Names[i], 0); 335 | str := CurrToStr( d ); 336 | li.SubItems.Add( str ); 337 | end; 338 | if sl.ValueFromIndex[i] = 'DateTime' then 339 | begin 340 | li.ImageIndex := 11; 341 | dt := df.ReadDateTime(section, sl.Names[i], Now() ); 342 | str := DateTimeToStr(dt); 343 | li.SubItems.Add( str ); 344 | end; 345 | if sl.ValueFromIndex[i] = 'Font' then 346 | begin 347 | li.ImageIndex := 13; 348 | f:= TFont.Create; 349 | df.ReadFont(section, sl.Names[i], f ); 350 | str := f.Name; 351 | str := str + ', size '+IntToStr(f.Size); 352 | if TFontStyle.fsBold in f.Style then str := str + ', bold'; 353 | if TFontStyle.fsItalic in f.Style then str := str + ', italic'; 354 | if TFontStyle.fsUnderline in f.Style then str := str + ', underline'; 355 | if TFontStyle.fsStrikeOut in f.Style then str := str + ', strikeout'; 356 | li.SubItems.Add( str ); 357 | f.Free; 358 | end; 359 | 360 | end; 361 | 362 | ValueList.SortType := stText; 363 | ValueList.Items.EndUpdate; 364 | sl.Free; 365 | end; 366 | 367 | 368 | procedure TfrmMain.EditValue(section: string; identifier: string; datatype: string); 369 | var frm: TfrmEdit; 370 | b: Boolean; 371 | begin 372 | // since booleans can only be TRUE of FALSE, we just flip it instead of showing the edit window 373 | if datatype = 'Boolean' then 374 | begin 375 | b := not df.ReadBoolean(section, identifier, true); 376 | df.WriteBoolean(section, identifier, b); 377 | // refresh list view 378 | LoadValues(section); 379 | exit; 380 | end; 381 | 382 | // font settings - we just show a font dialog 383 | if datatype = 'Font' then 384 | begin 385 | FontDialog1.Font := frmMain.Font; 386 | df.ReadFont(section, identifier, FontDialog1.Font); 387 | if FontDialog1.Execute then 388 | begin 389 | df.WriteFont(section, identifier, FontDialog1.Font); 390 | LoadValues(section); 391 | exit; 392 | end; 393 | end; 394 | 395 | frm := TfrmEdit.Create(frmMain); 396 | frm.Position := poOwnerFormCenter; 397 | 398 | frm.df_type := datatype; 399 | 400 | frm.edit_ValuePath.Text := section; 401 | frm.edit_ValueName.Text := identifier; 402 | 403 | if (datatype = 'String') then 404 | begin 405 | frm.pages.ActivePage := frm.page_String; 406 | frm.edit_String.Text := df.ReadString(section, identifier, ''); 407 | 408 | frm.ActiveControl := frm.edit_String; 409 | frm.edit_String.SelectAll; 410 | end 411 | else 412 | if (datatype = 'Strings') then 413 | begin 414 | frm.pages.ActivePage := frm.page_String; 415 | df.ReadStrings(section, identifier, frm.edit_String.Lines); 416 | 417 | frm.ActiveControl := frm.edit_String; 418 | frm.edit_String.SelectAll; 419 | end 420 | else 421 | if (datatype = 'Int8') or (datatype = 'UInt8') then 422 | begin 423 | frm.pages.ActivePage := frm.page_Int8; 424 | if (datatype = 'Int8') then 425 | begin 426 | frm.edit_Int8.Text := IntToStr( df.ReadInt8(section, identifier, 0) ); 427 | frm.edit_Int8_Hex.Text := IntToHex( df.ReadInt8(section, identifier, 0) ); 428 | frm.edit_int8_type.Text := datatype + ' | 8-bit Signed Integer [-128 .. 127]'; 429 | end 430 | else 431 | begin 432 | frm.edit_Int8.Text := format('%u', [ df.ReadUInt8(section, identifier, 0) ]); 433 | frm.edit_Int8_Hex.Text := IntToHex( df.ReadUInt8(section, identifier, 0) ); 434 | frm.edit_int8_type.Text := datatype + ' | 8-bit Unsigned Integer | Byte [0 .. 255]'; 435 | end; 436 | 437 | frm.ActiveControl := frm.edit_Int8; 438 | frm.edit_Int8.SelectAll; 439 | end 440 | else 441 | if (datatype = 'Int16') or (datatype = 'UInt16') then 442 | begin 443 | frm.pages.ActivePage := frm.page_Int16; 444 | if (datatype = 'Int16') then 445 | begin 446 | frm.edit_Int16.Text := IntToStr( df.ReadInt16(section, identifier, 0) ); 447 | frm.edit_Int16_Hex.Text := IntToHex( df.ReadInt16(section, identifier, 0) ); 448 | frm.edit_int16_type.Text := datatype + ' | 16-bit Signed Integer [-32768 .. 32767]'; 449 | end 450 | else 451 | begin 452 | frm.edit_Int16.Text := format('%u', [ df.ReadUInt16(section, identifier, 0) ]); 453 | frm.edit_Int16_Hex.Text := IntToHex( df.ReadUInt16(section, identifier, 0) ); 454 | frm.edit_int16_type.Text := datatype + ' | 16-bit Unsigned Integer | Word [0 .. 65535]'; 455 | end; 456 | 457 | frm.ActiveControl := frm.edit_Int16; 458 | frm.edit_Int16.SelectAll; 459 | end 460 | else 461 | if (datatype = 'Int32') or (datatype = 'UInt32') then 462 | begin 463 | frm.pages.ActivePage := frm.page_Integer; 464 | if (datatype = 'Int32') then 465 | begin 466 | frm.edit_Integer.Text := IntToStr( df.ReadInteger(section, identifier, 0) ); 467 | frm.edit_Integer_Hex.Text := IntToHex( df.ReadInteger(section, identifier, 0) ); 468 | frm.edit_int32_type.Text := datatype + ' | 32-bit Signed Integer'; 469 | end 470 | else 471 | begin 472 | frm.edit_Integer.Text := format('%u', [ df.ReadUInt32(section, identifier, 0) ]); 473 | frm.edit_Integer_Hex.Text := IntToHex( df.ReadUInt32(section, identifier, 0) ); 474 | frm.edit_int32_type.Text := datatype + ' | 32-bit Unsigned Integer'; 475 | end; 476 | 477 | frm.ActiveControl := frm.edit_Integer; 478 | frm.edit_Integer.SelectAll; 479 | end 480 | else 481 | if (datatype = 'Int64') or (datatype = 'UInt64') then 482 | begin 483 | frm.pages.ActivePage := frm.page_Int64; 484 | if (datatype = 'Int64') then 485 | begin 486 | frm.edit_Int64.Text := IntToStr( df.ReadInt64(section, identifier, 0) ); 487 | frm.edit_Int64_Hex.Text := IntToHex( df.ReadInt64(section, identifier, 0) ); 488 | frm.edit_int64_type.Text := datatype + ' | 64-bit Signed Integer'; 489 | end 490 | else 491 | begin 492 | frm.edit_Int64.Text := format('%u', [ df.ReadUInt64(section, identifier, 0) ]); 493 | frm.edit_Int64_Hex.Text := IntToHex( df.ReadUInt64(section, identifier, 0) ); 494 | frm.edit_int64_type.Text := datatype + ' | 64-bit Unsigned Integer'; 495 | end; 496 | 497 | frm.ActiveControl := frm.edit_Int64; 498 | frm.edit_Int64.SelectAll; 499 | end 500 | else 501 | if (datatype = 'Single') or (datatype = 'Double') or (datatype = 'Currency') then 502 | begin 503 | frm.pages.ActivePage := frm.page_Float; 504 | if (datatype = 'Single') then 505 | begin 506 | frm.edit_Float.Text := FloatToStr( df.ReadSingle(section, identifier, 0.0) ); 507 | frm.edit_Float_type.Text := datatype + ' | 32-bit Float'; 508 | end 509 | else 510 | if (datatype = 'Double') then 511 | begin 512 | frm.edit_Float.Text := FloatToStr( df.ReadDouble(section, identifier, 0.0) ); 513 | frm.edit_Float_type.Text := datatype + ' | 64-bit Float'; 514 | end 515 | else 516 | begin 517 | //frm.edit_Float.Text := CurrToStrF( df.ReadCurrency(section, identifier, 0.0000) , ffCurrency, 4); 518 | frm.edit_Float.Text := CurrToStr( df.ReadCurrency(section, identifier, 0.0000) ); 519 | frm.edit_Float_type.Text := datatype + ' | 64-bit Float'; 520 | end; 521 | 522 | frm.ActiveControl := frm.edit_Float; 523 | frm.edit_Integer.SelectAll; 524 | end 525 | else 526 | if datatype = 'DateTime' then 527 | begin 528 | frm.pages.ActivePage := frm.page_Calendar; 529 | frm.calendar_time.DateTime := df.ReadDateTime(section, identifier, Now()); 530 | frm.calendar_date.Date := frm.calendar_time.Date; 531 | end 532 | else 533 | if (datatype = 'Stream') or (datatype = 'Unknown') then 534 | begin 535 | frm.pages.ActivePage := frm.page_Stream; 536 | frm.fs := TMemoryStream.Create; 537 | df.ReadStream(section, identifier, frm.fs); 538 | frm.fs.Position := 0; 539 | 540 | frm.edit_String.Lines.LoadFromStream(frm.fs); 541 | 542 | frm.SetupHexViewer; 543 | end; 544 | 545 | // save data 546 | if frm.ShowModal = mrOk then 547 | begin 548 | if datatype = 'String' then df.WriteString(section, identifier, frm.edit_String.Text) 549 | else 550 | if datatype = 'Strings' then df.WriteStrings(section, identifier, frm.edit_String.Lines) 551 | else 552 | if datatype = 'Int8' then df.WriteInt8(section, identifier, Int8(StrToInt(frm.edit_Int8.Text) ) ) 553 | else 554 | if datatype = 'UInt8' then df.WriteUInt8(section, identifier, UInt8(StrToUInt(frm.edit_Int8.Text) ) ) 555 | else 556 | if datatype = 'Int16' then df.WriteInt16(section, identifier, Int16(StrToInt(frm.edit_Int16.Text) ) ) 557 | else 558 | if datatype = 'UInt16' then df.WriteUInt16(section, identifier, UInt16(StrToUInt(frm.edit_Int16.Text) ) ) 559 | else 560 | if datatype = 'Int32' then df.WriteInteger(section, identifier, StrToInt(frm.edit_Integer.Text) ) 561 | else 562 | if datatype = 'UInt32' then df.WriteUInt32(section, identifier, StrToUInt(frm.edit_Integer.Text) ) 563 | else 564 | if datatype = 'Int64' then df.WriteInt64(section, identifier, StrToInt64(frm.edit_Int64.Text) ) 565 | else 566 | if datatype = 'UInt64' then df.WriteUInt64(section, identifier, StrToUInt64(frm.edit_Int64.Text) ) 567 | else 568 | if datatype = 'Single' then df.WriteSingle(section, identifier, Single(StrToFloat(frm.edit_Float.Text)) ) 569 | else 570 | if datatype = 'Double' then df.WriteDouble(section, identifier, Double(StrToFloat(frm.edit_Float.Text)) ) 571 | else 572 | if datatype = 'Currency' then df.WriteCurrency(section, identifier, StrToCurr(frm.edit_Float.Text) ) 573 | 574 | else 575 | if datatype = 'DateTime' then df.WriteDateTime(section, identifier, frm.calendar_time.DateTime ) 576 | 577 | else 578 | if datatype = 'Stream' then begin frm.fs.Position := 0; df.WriteStream(section, identifier, frm.fs); end 579 | else 580 | if datatype = 'Unknown' then begin frm.fs.Position := 0; df.WriteStream(section, identifier, frm.fs, TDFType.dfd_Unknown); end 581 | 582 | ; 583 | 584 | 585 | // refresh list 586 | LoadValues(section); 587 | end; 588 | 589 | if datatype = 'Stream' then frm.fs.Free; 590 | 591 | frm.Free; 592 | end; 593 | 594 | 595 | 596 | procedure TfrmMain.importfile1Click(Sender: TObject); 597 | var fs: TMemoryStream; 598 | t: TTreeNode; 599 | p: string; 600 | li: TListItem; 601 | begin 602 | if KeyTree.Selected = nil then exit; 603 | 604 | t := KeyTree.Selected; 605 | p:=GetPathFromNode(t); 606 | 607 | if OpenDialog1.Execute then 608 | begin 609 | fs := TMemoryStream.Create; 610 | fs.LoadFromFile(OpenDialog1.FileName); 611 | df.WriteStream(p, ExtractFileName(OpenDialog1.FileName), fs); 612 | fs.Free; 613 | 614 | li := ValueList.Items.Add; 615 | li.Caption := ExtractFileName(OpenDialog1.FileName); 616 | li.SubItems.Add('Stream'); 617 | li.SubItems.Add('(new binary stream)'); 618 | end; 619 | end; 620 | 621 | procedure TfrmMain.AboutDataFileEditor1Click(Sender: TObject); 622 | begin 623 | frmAbout.ShowModal; 624 | end; 625 | 626 | procedure TfrmMain.btn_addKeyClick(Sender: TObject); 627 | var t:TTreeNode; 628 | p:string; 629 | begin 630 | if btn_addKey.Tag = 1 then // key 631 | begin 632 | t := KeyTree.Selected; 633 | p:=GetPathFromNode(t); 634 | if p <> '' then p := p+'/'+edit_addKey.Text; 635 | end 636 | else 637 | p := edit_addKey.Text; // root key 638 | 639 | 640 | df.WriteDateTime(p, 'creation.date', Now()); 641 | CreateNodes(p, '', nil); 642 | 643 | panel_addKey.Visible := false; 644 | edit_addKey.Text := ''; 645 | KeyTree.Enabled := true; 646 | end; 647 | 648 | procedure TfrmMain.btn_addKey_CancelClick(Sender: TObject); 649 | begin 650 | panel_addKey.Visible := false; 651 | edit_addKey.Text := ''; 652 | KeyTree.Enabled := true; 653 | end; 654 | 655 | procedure TfrmMain.btn_addValueClick(Sender: TObject); 656 | var t: TTreeNode; 657 | p, sdt, sdd: string; 658 | dt: integer; 659 | li: TListItem; 660 | ms: TMemoryStream; 661 | begin 662 | dt := (Sender as TButton).Tag; 663 | 664 | t := KeyTree.Selected; 665 | p := GetPathFromNode(t); 666 | 667 | if df.ValueExists(p, edit_addValue.Text) then 668 | begin 669 | li := ValueList.FindCaption(0, edit_addValue.Text, false, true, false); 670 | li.Delete; 671 | end; 672 | 673 | sdd := '(new entry) '; // value it contains 674 | sdt := ''; 675 | // the tag value must corespond with the TDFType enumeration values 676 | case dt of 677 | 0: begin end; // unknown 678 | 1: begin // streams 679 | ms := TMemoryStream.Create; 680 | df.WriteStream(p, edit_addValue.Text, ms); 681 | ms.Free; 682 | sdt := 'Stream'; 683 | sdd := sdd + '(binary stream)'; 684 | end; 685 | 2: begin df.WriteStrings(p, edit_addValue.Text, TStringList.Create()); sdt := 'Strings'; end; 686 | 3: begin end; // not used: ansistring 687 | 4: begin df.WriteString(p, edit_addValue.Text, ''); sdt := 'String'; end; 688 | 5: begin df.WriteBoolean(p, edit_addValue.Text, false); sdt := 'Boolean'; sdd := sdd+'FALSE'; end; 689 | 6: begin df.WriteInt8(p, edit_addValue.Text, 0); sdt := 'Int8'; sdd := sdd+'0'; end; 690 | 7: begin df.WriteInt16(p, edit_addValue.Text, 0); sdt := 'Int16'; sdd := sdd+'0'; end; 691 | 8: begin df.WriteUInt8(p, edit_addValue.Text, 0); sdt := 'UInt8'; sdd := sdd+'0'; end; 692 | 9: begin df.WriteUInt16(p, edit_addValue.Text, 0); sdt := 'UInt16'; sdd := sdd+'0'; end; 693 | 10: begin df.WriteInteger(p, edit_addValue.Text, 0); sdt := 'Int32'; sdd := sdd+'0'; end; 694 | 11: begin df.WriteInt64(p, edit_addValue.Text, 0); sdt := 'Int64'; sdd := sdd+'0'; end; 695 | 12: begin df.WriteUInt32(p, edit_addValue.Text, 0); sdt := 'UInt32'; sdd := sdd+'0'; end; 696 | 13: begin df.WriteUInt64(p, edit_addValue.Text, 0); sdt := 'UInt64'; sdd := sdd+'0'; end; 697 | 14: begin end; // not used: real48 698 | 15: begin end; // not used: extended 699 | 16: begin df.WriteSingle(p, edit_addValue.Text, 0); sdt := 'Single'; sdd := sdd+'0'; end; 700 | 17: begin df.WriteDouble(p, edit_addValue.Text, 0); sdt := 'Double'; sdd := sdd+'0'; end; 701 | 18: begin df.WriteCurrency(p, edit_addValue.Text, 0); sdt := 'Currency'; sdd := sdd+'0'; end; 702 | 19: begin df.WriteDateTime(p, edit_addValue.Text, Now());sdt := 'DateTime'; sdd := sdd+DateTimeToStr(Now()); end; 703 | 20: begin df.WriteFont(p, edit_addValue.Text, frmMain.Font); sdt := 'Font'; end; 704 | end; 705 | 706 | li := ValueList.Items.Add; 707 | li.Caption := edit_addValue.Text; 708 | li.SubItems.Add(sdt); 709 | li.SubItems.Add(sdd); 710 | 711 | panel_addValue.Visible := false; 712 | edit_addValue.Text := ''; 713 | ValueList.Enabled := true; 714 | 715 | end; 716 | 717 | procedure TfrmMain.btn_addValue_CancelClick(Sender: TObject); 718 | begin 719 | panel_addValue.Visible := false; 720 | edit_addValue.Text := ''; 721 | ValueList.Enabled := true; 722 | end; 723 | 724 | procedure TfrmMain.Delete1Click(Sender: TObject); 725 | var t:TTreeNode; 726 | p:string; 727 | begin 728 | if KeyTree.Selected = nil then exit; 729 | 730 | t := KeyTree.Selected; 731 | p:=GetPathFromNode(t); 732 | 733 | df.DeleteSection(p); 734 | 735 | t.Delete; 736 | end; 737 | 738 | procedure TfrmMain.Delete2Click(Sender: TObject); 739 | var t:TTreeNode; 740 | p:string; 741 | li:TListItem; 742 | begin 743 | if KeyTree.Selected = nil then exit; 744 | if ValueList.Selected = nil then exit; 745 | 746 | t := KeyTree.Selected; 747 | p:=GetPathFromNode(t); 748 | 749 | li := ValueList.Selected; 750 | 751 | df.Delete(p, li.Caption); 752 | 753 | li.Delete; 754 | end; 755 | 756 | procedure TfrmMain.edit_addKeyKeyPress(Sender: TObject; var Key: Char); 757 | begin 758 | if Key = #13 then btn_addKey.Click; 759 | end; 760 | 761 | procedure TfrmMain.edit_addValueKeyPress(Sender: TObject; var Key: Char); 762 | begin 763 | if Key = #13 then btn_addValue.Click; 764 | end; 765 | 766 | procedure TfrmMain.Exit1Click(Sender: TObject); 767 | begin 768 | if (df is TDataFile) then df.Destroy; 769 | Close; 770 | end; 771 | 772 | procedure TfrmMain.Key1Click(Sender: TObject); 773 | begin 774 | if KeyTree.Selected = nil then exit; 775 | 776 | lbl_addKey.Caption := LABEL_ADDKEY; 777 | panel_addKey.Visible := true; 778 | frmMain.FocusControl(edit_addKey); 779 | btn_addKey.Tag := 1; 780 | KeyTree.Enabled := false; 781 | end; 782 | 783 | 784 | procedure TfrmMain.KeyTreeClick(Sender: TObject); 785 | var t:TTreeNode; 786 | p:string; 787 | begin 788 | if not Assigned(df) then exit; 789 | 790 | if KeyTree.Selected = nil then exit; 791 | 792 | // build path 793 | t := KeyTree.Selected; 794 | p := GetPathFromNode(t); 795 | 796 | AddressBar.Text := p; 797 | 798 | LoadValues(p); 799 | end; 800 | 801 | procedure TfrmMain.KeyTreeContextPopup(Sender: TObject; MousePos: TPoint; 802 | var Handled: Boolean); 803 | var t:TTreeNode; 804 | begin 805 | if not Assigned(df) then Handled:=true; 806 | 807 | Delete1.Visible := true; 808 | Delete2.Visible := false; 809 | 810 | t := KeyTree.GetNodeAt(MousePos.X, MousePos.Y); 811 | if Assigned(t) then t.Selected := True; 812 | 813 | // call onclick 814 | KeyTreeClick(Sender); 815 | end; 816 | 817 | procedure TfrmMain.KeyTreeCreateNodeClass(Sender: TCustomTreeView; var NodeClass: TTreeNodeClass); 818 | begin 819 | NodeClass := TDFTreeNode; 820 | end; 821 | 822 | procedure TfrmMain.KeyTreeDblClick(Sender: TObject); 823 | var t:TTreeNode; 824 | begin 825 | if KeyTree.Selected = nil then exit; 826 | 827 | t := KeyTree.Selected; 828 | if t.Parent <> nil then 829 | if t.Expanded then t.Collapse(false) else t.Expand(false); 830 | end; 831 | 832 | procedure TfrmMain.New1Click(Sender: TObject); 833 | var frm: TfrmDFKey; 834 | mr: TModalResult; 835 | begin 836 | if SaveDialog1.Execute then 837 | begin 838 | KeyTree.Items.Clear; 839 | if (df is TDataFile) then df.Destroy; 840 | 841 | // if file exists, empty it 842 | if FileExists(SaveDialog1.FileName) then TFileStream.Create( SaveDialog1.FileName, fmCreate ).Free; 843 | 844 | frm := TfrmDFKey.Create(frmMain); 845 | frm.Position := TPosition.poOwnerFormCenter; 846 | frm.lbl_InfoNew.Visible := true; 847 | frm.edit_filename.Text := SaveDialog1.FileName; 848 | frm.edit_Password.Text := ''; 849 | frm.ActiveControl := frm.edit_Password; 850 | mr := frm.ShowModal; 851 | 852 | df := TDataFile.Create(SaveDialog1.FileName); 853 | if mr = mrOk then df.CodeKey := frm.edit_Password.Text 854 | else df.CodeKey := ''; 855 | 856 | frm.Free; 857 | 858 | if not df.SectionExists('META') then 859 | begin 860 | df.WriteDateTime('META', 'creation.date', Now() ); 861 | end; 862 | 863 | LoadHive; 864 | end; 865 | end; 866 | 867 | procedure TfrmMain.Open1Click(Sender: TObject); 868 | var frm: TfrmDFKey; 869 | mr: TModalResult; 870 | begin 871 | if OpenDialog1.Execute then 872 | begin 873 | KeyTree.Items.Clear; 874 | if (df is TDataFile) then df.Destroy; 875 | 876 | if not FileExists(OpenDialog1.FileName) then 877 | begin 878 | MessageDlg( 'File not found!', TMsgDlgType.mtError, [mbOk], 0); 879 | exit; 880 | end; 881 | 882 | 883 | frm := TfrmDFKey.Create(frmMain); 884 | frm.Position := TPosition.poOwnerFormCenter; 885 | frm.lbl_InfoOpen.Visible := true; 886 | frm.edit_filename.Text := OpenDialog1.FileName; 887 | frm.edit_Password.Text := ''; 888 | frm.ActiveControl := frm.edit_Password; 889 | mr := frm.ShowModal; 890 | 891 | df := TDataFile.Create(OpenDialog1.FileName); 892 | if mr = mrOk then df.CodeKey := frm.edit_Password.Text 893 | else df.CodeKey := ''; 894 | 895 | if df.SectionCount = 0 then 896 | if not df.SectionExists('META') then 897 | begin 898 | df.WriteDateTime('META', 'creation.date', Now() ); 899 | end; 900 | 901 | LoadHive; 902 | end; 903 | end; 904 | 905 | procedure TfrmMain.RootKey1Click(Sender: TObject); 906 | begin 907 | lbl_addKey.Caption := LABEL_ADDROOT; 908 | panel_addKey.Visible := true; 909 | frmMain.FocusControl(edit_addKey); 910 | btn_addKey.Tag := 0; 911 | KeyTree.Enabled := false; 912 | 913 | end; 914 | 915 | procedure TfrmMain.ValueListContextPopup(Sender: TObject; MousePos: TPoint; 916 | var Handled: Boolean); 917 | var li: TListItem; 918 | begin 919 | if not Assigned(df) then Handled:=true; 920 | 921 | li := ValueList.GetItemAt(MousePos.X, MousePos.Y); 922 | if Assigned(li) then li.Selected := True; 923 | 924 | Delete1.Visible := false; 925 | Delete2.Visible := true; 926 | end; 927 | 928 | procedure TfrmMain.ValueListDblClick(Sender: TObject); 929 | var li: TListItem; 930 | pos:TPoint; 931 | 932 | t:TTreeNode; 933 | p:string; 934 | 935 | begin 936 | if not Assigned(df) then exit; 937 | if KeyTree.Selected = nil then exit; 938 | 939 | // build path 940 | t := KeyTree.Selected; 941 | p := GetPathFromNode(t); 942 | 943 | pos := Mouse.CursorPos; 944 | pos := ValueList.ScreenToClient(pos); // translate to be relative to list 945 | 946 | li := ValueList.GetItemAt(pos.X, pos.Y); 947 | if li = nil then exit; 948 | 949 | EditValue(p, li.Caption, li.SubItems.Strings[0]); 950 | end; 951 | 952 | procedure TfrmMain.addValueClick(Sender: TObject); 953 | begin 954 | if KeyTree.Selected = nil then exit; 955 | 956 | panel_addValue.Visible := true; 957 | frmMain.FocusControl(edit_addValue); 958 | btn_addValue.Tag := (Sender as TMenuItem).Tag; 959 | ValueList.Enabled := false; 960 | 961 | end; 962 | 963 | end. 964 | --------------------------------------------------------------------------------