Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

просмотр и редактирование HEX дампа памяти   Найти похожие ветки 

 
Dmitriy_R   (2003-02-26 06:21) [0]

Как и при помощи чего лучше и проще просматривать и редактировать HEX дамп памяти. Тоесть типо как в фаре при просмотре по F3 клавишей F4 можно смотреть и текст и код.
Надо все это сделать у себя в программе.


 
Dmitriy_R   (2003-02-28 07:34) [1]

Ну неужели некто не подскажет? Надо мне в прогу затолкать этот редактор...


 
Anatoly Podgoretsky   (2003-02-28 08:08) [2]

ShellExecute


 
Dmitriy_R   (2003-03-04 13:00) [3]

А если мне надо в своей программе сделать такой редактор?


 
Anatoly Podgoretsky   (2003-03-04 13:05) [4]

StringList


 
Dmitriy_R   (2003-03-06 13:16) [5]

Так ничего не получается. Ну попытаюсь объяснить по другому.
Пишу программу для программатора, мне надо встроить в нее Hex редактор, чтобы в нем все выглядело примерно вот так:
0000: 00 01 02 03 04 .....0D 0E 0F !@#$%^&*()_
0010: 00 01 02 03 04 .....0D 0E 0F !@#$%^&*()_
но как реализовать и с помощью чего не знаю.
Может кто подскажет или примеры есть чего нибудь подобного.


 
han_malign   (2003-03-06 13:24) [6]

WinHex - редактирует - все что угодно, от памяти Kernel32 до Boot record...


 
Anatoly Podgoretsky   (2003-03-06 13:25) [7]

StringGrid 18 колонок, вместо StringGrid можно любой другой Grid


 
Игорь Шевченко   (2003-03-06 13:38) [8]

unit SmDataInspector;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, Buttons, StdCtrls, ExtCtrls;

type
TSmDumpMode = (sdByte, sdWord, sdLong);

TfrmDataInspector = class(TForm)
Panel1: TPanel;
emAddress: TEdit;
Label1: TLabel;
SpeedButton1: TSpeedButton;
gr: TStringGrid;
Label2: TLabel;
emSize: TEdit;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FSmDumpMode: TSmDumpMode;
procedure RebuildView();
procedure SetSmDumpMode(const Value: TSmDumpMode);
public
property SmDumpMode : TSmDumpMode read FSmDumpMode write SetSmDumpMode;
end;

var
frmDataInspector: TfrmDataInspector;

implementation
uses
SmDef, Segment, SmUtils;

{$R *.DFM}

procedure TfrmDataInspector.RebuildView;
var ASeg : Integer;
AOfs : LongInt;
ASize : LongInt;
S : TSegment;

S1, S2 : String;
A1, A2 : String[8];
I : LongInt;
Loops{, Rem }: LongInt;
Loc : LongInt;

procedure printPart (Part : Integer);
var S0 : String;
A : String[8];
J : Integer;
C : Byte;
begin
S0 := "";
A := "........";
case SmDumpMode of
sdByte:
for J:=0 to 7 do
if (Part = 1) then
S0 := S0 + Format("%.2x ", [S.GetB(Loc+J)])
else
S0 := S0 + Format("%.2x ", [S.GetB(Loc+J+8)]);
sdWord:
for J:=0 to 3 do
if (Part = 1) then
S0 := S0 + Format("%.4x ", [S.GetW(Loc+J*2)])
else
S0 := S0 + Format("%.4x ", [S.GetW(Loc+8+J*2)]);
sdLong:
for J:=0 to 1 do
if (Part = 1) then
S0 := S0 + Format("%.8x ", [S.GetL(Loc+J*4)])
else
S0 := S0 + Format("%.8x ", [S.GetL(Loc+8+J*4)]);
end;
for J:=0 to 7 do begin
if (Part = 1) then
C := S.at[Loc+J]
else
C := S.at[Loc+J+8];
if (C >= 32) AND (C <= 126) then
A[J+1] := Char(C);
end;
if (Part = 1) then begin
S1 := S0;
A1 := A;
end else begin
S2 := S0;
A2 := A;
end;
end;

begin
if NOT ParseAddress(emAddress.Text, ASeg, AOfs) then begin
ShowMessageFmt("Illegal address: %s",[emAddress.Text]);
Exit;
end;
ASize := StrToIntDef(emSize.Text, 0);
if ASize = 0 then begin
ShowMessageFmt("Illegal size: %s",[emSize.Text]);
Exit;
end;
S := SegTab[ASeg-1];
{V1.0-002}
if NOT S.Probe(AOfs) then begin
ShowMessageFmt("Start address %.8x out of segment %.2x: %s",[AOfs, ASeg, emAddress.Text]);
Exit;
end;
if NOT S.Probe(AOfs+ASize-1) then begin
ShowMessageFmt("End address %.8x out of segment %.2x: %s",[AOfs+ASize, ASeg, emAddress.Text]);
Exit;
end;
{/V1.0-002}
Loops := ASize DIV 16;
if (ASize MOD 16) = 0 then
Inc(Loops);
gr.RowCount := Loops + 1;
gr.Cells[0,0] := "Loc";
gr.Cells[1,0] := "Data";
gr.Cells[2,0] := "Text";
for I:=0 to Pred(Loops) do begin
Loc := AOfs + (I SHL 4);
PrintPart(1);
PrintPart(2);
gr.Cells[0,I+1] := MakeAddress(ASeg, Loc);
gr.Cells[1,I+1] := Format("%s %s", [S1,S2]);
gr.Cells[2,I+1] := Format("%s %s", [A1,A2]);
end;
end;

procedure TfrmDataInspector.SetSmDumpMode(const Value: TSmDumpMode);
begin
if (FSmDumpMode <> Value) then begin
FSmDumpMode := Value;
RebuildView();
end;
end;

procedure TfrmDataInspector.SpeedButton1Click(Sender: TObject);
begin
RebuildView();
end;

procedure TfrmDataInspector.FormCreate(Sender: TObject);
begin
FSmDumpMode := sdByte;
end;

procedure TfrmDataInspector.SpeedButton2Click(Sender: TObject);
begin
SmDumpMode := sdByte;
end;

procedure TfrmDataInspector.SpeedButton3Click(Sender: TObject);
begin
SmDumpMode := sdWord;
end;

procedure TfrmDataInspector.SpeedButton4Click(Sender: TObject);
begin
SmDumpMode := sdLong;
end;

procedure TfrmDataInspector.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;

end.


 
Dmitriy_R   (2003-03-07 06:26) [9]

Спасибо Игорь Шевченко, на исходнике разобратся легче. За исключением одного в строках:
uses
SmDef, Segment, SmUtils;

у меня ошибка, либо я что то не положил либо .....
поясни пожалуйста.



 
sevylor   (2003-03-11 05:41) [10]

Есть компонент HEXGRID автор Александр Елисеев, брал здесь:
http://www.telesys.ru/projects/proj014/index.shtml
Проект программатора для Amtel & PIC, на Delphi 5.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
4-64434
V.exeR
2003-01-27 11:33
2003.03.20
Полное имя файла (не бейте ногами)


3-63925
Fishka
2003-02-25 16:31
2003.03.20
Триггер - непонятно, для чего он.


4-64433
Владимир
2003-01-27 09:59
2003.03.20
Добавить пункт меню в попуп-меню проводника


14-64345
Дмитрий К.К.
2003-03-05 06:21
2003.03.20
Именинники 5 марта


1-64129
digester
2003-03-11 03:00
2003.03.20
Как скрыть программу в Панель задач?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский