TMPHexEditor/TMPHexEditorEx components by mirkes.de
TMPHexEditor is a TCustomGrid descendant to view and
edit binary files in hexadecimal and textual format.
TMPHexEditorEx is an advanced hex editor, is supports
OLE drag and drop, printing, print preview and more.
contents:
version:
version 06-15-2004, released june 15, 2004
target:
the package has been tested and is supposed to work in
Borland Delphi 4, 6 and 7 and C++ Builder 6.
sources:
the component sources are included in the package.
history:
version 06-15-2004: june 15, 2004
- added DrawDataPosition and IsDrawDataSelected
properties
- changes in drawing/invalidating to avoid unnecessary
painting
- OnMouseDown is now called also if offset pane or ruler
are clicked
- if BytesPerUnit is changed, the selection is reset if
(SelCount mod BytesPerUnit) <> 0
version 06-10-2004: june 10, 2004
version 06-07-2004: june 07, 2004
- fixed a crash ("Grid index out of range") when switching
from unicode
- SyncView method modified to be able to synchronize the
view of editors with different data sizes/layouts, also with
offset
- on changing TopRow/LeftCol the caret is
repositionned
- overwritten mouse wheel handling to allow page
scrolling
- manual handling of MaskChar property streaming due to bug
reports ("Invalid Property Value")
version 05-30-2004: may 30, 2004
- fixed broken CanOpenFile routine (files were always
marked read-only)
version 05-27-2004: may 27, 2004
- added IsMaxOffset property
- the control gets focused when the mouse is clicked even
when the mouse is over the selection
version 05-13-2004: may 13, 2004
- OnDrawCell is now also called for the top left cell
- setting UnicodeChars to False now correctly sets
BytesPerUnit to 1
version 04-18-2004: april 18, 2004
- parameters aBuffer and bBuffer were interchanged in the
CopyMemory call in TranslateBufferFromAnsi
- GetOffsetString can now be called in OnGetOffsetText
without crashing (infinite recursion = stack overflow)
version 01-08-2004: january 08, 2004
- added some explicit pointer typecasts for {$T+}
compatibility
- removed FindTable and FindTableI properties under BCB
(BCB doesn't like array properties)
version 12-16-2003: december 16, 2003
- setting the DataSize property is now undoable
- added the public SetDataSizeFillByte property to be able
to control what byte is used to enlarge the data
- now checking NoSizeChange before allowing to set
DataSize
- CreateUndo is no longer a function, but a procedure. now
an exception is raised when no undo record can be
created
version 12-10-2003: december 10, 2003
- renamed OnLoadSaveProgress to OnProgress
- added property FindProgress
- added custom find methods OnFind, OnWildcardFind
- Find and FindWithWildcard speeded up by using precompiled
character tables
- Find and FindWithWildcard now also fire the OnProgress
event if FindProgress is set to true
- fixed a bug in mouse handling (weird selection or line
offsets when doublecklicking ruler bar/offset panel)
- modified selection code to better support double byte
selection (unicode)
version 09-24-2003: september 24, 2003
- modified the BCB6 package
version 09-09-2003: september 09, 2003
- changed some constants, classes and types from MPTH... to
MPH...
- changed MPHCustTransFieldFrom/To to
MPHCustomCharConv
- BytesPerBlock and SeparateBlocksInCharField
propertíes added
- DataSize property is writeable now
- Page down key now also reaches the last row
- added OnGetOffsetText property
- added AddSelectionUndo procedure
- added defines for delphi7, renamed delver.inc to
mpdelver.inc
- added wildcard search (FindWithWildcard)
- added SeekToEOF
- changed keyboard handling, so OnKeyDown should work
better
- added GotoBookmark method to set cursor to a bookmarked
position
- added OnBookmarkChanged property
- support for unsigned int64 radix conversions
- Replace method added
version 07-05-2003: july 05, 2003
- better handling of odd sized files when BytesPerUnit
<> 1
- added support for pasting clipboard data in fixed
filesize mode in TMPHexEditorEx
- added RegEdit_HexData clipboard support in
TMPHexEditorEx
version 05-25-2003-b: may 25, 2003
- fixed a bug (moving the cursor beyond eof)
version 05-25-2003: may 25, 2003
- added some kind of ownerdraw (see OnDrawCell)
- no ':' is printed when offset display is not used
- added hpp generating statements for bcb
compatibility
version 05-20-2003: may 20, 2003
- renamed, added and changed some methods, classes and
properties
- fixed some bugs in the ruler display (e.g. when
BytesPerRow is changed)
- fixed some bugs when BytesPerUnit <> 1
- added some unicode support (UnicodeChars and
UnicodeBigEndian)
- fixed some half byte (nibble) related bugs
version 05-17-2003: may 17, 2003
- added DisplayStart and DisplayEnd functions to retrieve
the data bounds currently displayed
- added BytesPerUnit and RulerBytesPerUnit properties to
treat words/dwords/qwords as a unit
- added SyncView procedure and OnSelectionChanged property
to synchronize position and selection with another
editor
- added ShowPositionIfNotFocused property to show the
current position if the editor is not focused
- corrected bottom margin handling when printing
- corrected upper/lowercase hex chars in printing
- the current unit is selected now when doubleclicking
data
- added flags pfCurrentViewOnly (just print the currently
visible data) to PrintOptions.Flags
version 10-25-2002: october 25, 2002
- corrected the BytesPerColumn default value
version 08-18-2002: august 18, 2002
- modified painting and selection
- implemented an additional ruler bar at the top
- new properties: ShowRuler, DrawGutter3D
version 08-12-2002: august 12, 2002
- modified Changed calls to get correct Modified property
in OnChange handler
version 08-09-2002: august 09, 2002
- included missing include file delver.inc
- added OnChange event
version 07-21-2002: july 21, 2002
too many changes to mention here (completely rewritten,
basic and advanced versions TMPHexEditor and TMPHexEditorEx),
please read the documentation included with this package for
more information
v 1.16: 02/02/99
- added WMGetDlgCode to avoid problems with
shortcut-controls on the form
- changed the property name ReadOnly to ReadOnlyFile ( to
avoid confusion, sorry )
- fixed updating when the font gets changed
- added OnKeyPress-support ( now you can modify the key
before THexEditor will parse it in this event )
- property WantTabs : Boolean ; if true, you can navigate
between char and hex field with the TAB key, if false, you
can navigate between your form's controls with the TAB key,
to change the current field in THexEditor, you have to use
CTRL+T.
- property ReadOnlyView : Boolean ; if true, than the
text/data in THexEditor can't get edited via key presses,
just selection , moving and scrolling are still
available
v 1.15: 01/03/99
- added option odOctal to TOffsetDisplayStyle to display
line offset in octal system ("8"-based)
- fixed a problem on creating a THexEditor dynamically (
thanks to John Shailes , JohnShailes _at_ email.msn.com
)
- property AllowInsertMode : Boolean ; if this is set to
true, THexEditor doesn't overwrite but insert values at the
current cursor position ( this cannot be set if NoSizeChange
is True )
- property IsInsertMode : Boolean ; readonly, if it returns
true, the current mode is inserting (see above )
- property AutoCaretMode : Boolean ; if true, the caret
will be set to a block in overwrite mode and to a left line
in insert mode automatically
v 1.14: not released
- fixed some bugs
- added currently unsupported variable line lengths
- added NoSizeChange property
v 1.13: 11/07/98
added AsText and AsHex property ( and converting functions
for "aa00bb" style hex files ) , MaskWhiteSpaces property to
avoid the '.' if you have a font that can display chars from #0
to #31; also typing capitals rather than lowercase chars in the
char field is now possible ( most of this stuff has been
suggested from Philippe Chessa , Philippe_Chessa _at_
compuserve.com, thanks )
v 1.12: 10/25/98
- added Half Byte (Nibble) support (insert/delete, swap
hi/lo nibbles in hex view)
- better performance
- the markers are now available for reading/writing
- added support for some different code types in the char
view : ANSI , 8 Bit ASCII ( OEM / Dos style ) , 7 Bit ASCII ,
Macintosh(TM) character set , IBM(TM) EBCDIC cp 038 also
conversion of the file's contents (or a range of them) from
one to another code type is possible (many thanks to
Christophe LE CORFEC, CLC _at_ khalif.com for ebcdic and half
byte suggestions)
v 1.1 : 10/04/98
- added find,seek, customizable layout (many thanks to John
Hamm, John _at_ TEMPUS.COM )
v 1.0 Beta 1 : 08/15/98
installation:
- Delphi 7: open, compile and install the package
MPHexEditor_D7.dpk under the vcl\Delphi-7 directory
- Delphi 6: open, compile and install the package
MPHexEditor_D6.dpk under the vcl\Delphi-6 directory
- Delphi 4: open, compile and install the package
MPHexEditor_D4.dpk under the vcl\Delphi-4 directory
- BCB 6: open, compile and install the package
MPHexEditor_BCB6.bpk under the vcl\BCB-6 directory
- others: copy all files under the \vcl subdir in a
directory contained in delphi's search path. add
MPHexEditorReg.pas to one of your library packages (e.g.
"Borland Delphi User Components") and recompile this package.
After successfull recompiling, the two components
TMPHexEditor and TMPHexEditorEx should be available on the
"mirkes.de" tab.
usage:
read the help file included in this package (under the \doc
path).
contact:
the author of this package is markus stephany, losheim am
see, saarland, germany.
mailto:vcl[at]mirkes[dot]de
(change the obvious!)
http://www.mirkes.de
license:
Copyright : ©1997-2004 markus stephany, all rights reserved
This source code is freeware. You may use, change, and distribute without
charge the source code as you like. This unit can be used freely in any
commercial applications. However, it may not be sold as a standalone product
and the source code may not be included in a commercial product. This unit
is provided as is with no warrent or support. Make sure to read relevant
information and documentation from Microsoft before using this unit.
-end-