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

Вниз

ищу компонент типа hexview   Найти похожие ветки 

 
redlord   (2004-12-19 21:01) [0]

Всем привет
народ где можно взять компонент для работы с данными в 16ричном представлении
(основные возможности отображение и редактирование)


 
begin...end ©   (2004-12-19 21:05) [1]

> redlord   (19.12.04 21:01)

А чем не подходит обычный TEdit ?


 
redlord   (2004-12-19 21:19) [2]

маленькое уточнение:
отображатся должно не одно число а порядка нескольких сотен


 
Leonid Troyanovsky ©   (2004-12-19 21:29) [3]


> redlord   (19.12.04 21:19) [2]
> отображатся должно не одно число а порядка нескольких сотен


TDrawGrid.
Уточнение: OnDrawCell, OnGet/SetEditText.

--
С уважением, LVT.


 
begin...end ©   (2004-12-19 21:31) [4]

> [2] redlord   (19.12.04 21:19)

Шестнадцатеричное представление - это текст. Для отображения и редактирования текста есть много стандартных компонентов.


 
Anatoly Podgoretsky ©   (2004-12-19 21:31) [5]

Leonid Troyanovsky ©   (19.12.04 21:29) [3]
StringGrid


 
Leonid Troyanovsky ©   (2004-12-19 21:38) [6]


> Anatoly Podgoretsky ©   (19.12.04 21:31) [5]
> StringGrid


Можно, конечно. Просто мне казалось, что hexview это
что-то для файлов. Тогда, спроецировав файл в память,
получаем готовый редактор.

--
С уважением, LVT.


 
redlord   (2004-12-19 21:39) [7]

StringGrid, логично .
но может есть чтото более специализированное ?


 
dimaxx ©   (2004-12-20 00:56) [8]

http://www.mirkes.de/en/delphi/vcls/hexedit.php - лучче не придумешь...


 
Anatoly Podgoretsky ©   (2004-12-20 01:07) [9]

Leonid Troyanovsky ©   (19.12.04 21:38) [6]
Одно другому не мешает, TstringGrid все равно его наследник, только уже специализированый для отобразения строк, чем конкретно и является 16ричное представление.
К тому же никто не заставляет загонять все полностью в ячейки. Ячейки использовать повторно.


 
Cosinus ©   (2004-12-20 10:01) [10]


> Leonid Troyanovsky ©
...спроецировав файл в память, получаем готовый редактор ...

Можно немного поточнее, как это реализовать?


 
Leonid Troyanovsky ©   (2004-12-20 14:32) [11]


> Cosinus ©   (20.12.04 10:01) [10]

> ...спроецировав файл в память, получаем готовый редактор

> Можно немного поточнее, как это реализовать?


И где я был неточен? :)

Ну, а если нужна реализация, можно, например, так
(за точность, на этот раз, не ручаюсь)


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

type
 TBytes = array [0..MAXLONGINT-16] of Byte;
 PBytes = ^TBytes;

 TForm1 = class(TForm)
   DrawGrid1: TDrawGrid;
   Button1: TButton;
   Button2: TButton;
   procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
   procedure DrawGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;
     var Value: String);
   procedure DrawGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
     const Value: String);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
     var CanSelect: Boolean);
 private
   { Private declarations }
   a: PBytes;
   mmf: THandle;
   fsize: Longint;
   frows, fcols: Longint;
   ffixedcols, ffixedrows: Longint;
   function GetValue(col, row: Longint): String;
   procedure SetValue(col, row: Longint; const Value: String);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 if Sender is TDrawGrid then
   with TDrawGrid(Sender), Canvas do
     begin
       if (ACol >= FixedCols) and
          (ARow >= FixedRows) then
         TextRect( Rect,
                   Rect.Left,
                   Rect.Top,
                   GetValue(ACol, ARow));
     end;
end;

procedure TForm1.DrawGrid1GetEditText(Sender: TObject; ACol,
 ARow: Integer; var Value: String);
begin
 with Sender as TDrawGrid do
   Value := GetValue(ACol, ARow);
end;

procedure TForm1.DrawGrid1SetEditText(Sender: TObject; ACol,
 ARow: Integer; const Value: String);
begin
 with Sender as TDrawGrid do
   SetValue(ACol, ARow,Value);
end;

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
 var CanSelect: Boolean);
begin
 CanSelect := ((ARow - ffixedrows) * fcols + (ACol - ffixedcols)) < fsize;
end;

function TForm1.GetValue;
var
 idx: Longint;
begin
 Result := "";
 if Assigned(a) then
   begin
     idx := (row - ffixedrows) * fcols + (col - ffixedcols);
     if idx < fsize then
       Result := IntToHex(a[idx], 2);
   end;
end;

procedure TForm1.SetValue;
var
 idx: Longint;
 abyte: Byte;
 code: Longint;
begin
 if Assigned(a) then
   begin
     idx := (row - ffixedrows) * fcols + (col - ffixedcols);
     if (idx < fsize) and (Value <> "") then
       begin
         Val("$"+Value, abyte, code);
         if code = 0 then
           a[idx] := abyte
         else
           raise EConvertError.Create("Invalid char");
       end;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 fs : TFileStream;
begin
 fs := TFileStream.Create("file1.txt", fmOpenReadWrite);
 fsize := fs.Size;
 ffixedcols := DrawGrid1.FixedCols;
 ffixedrows := DrawGrid1.FixedRows;
 fcols := DrawGrid1.ColCount - DrawGrid1.FixedCols;
 frows := fsize div fcols;
 if fsize mod fcols <> 0 then
   inc(frows);
 DrawGrid1.RowCount := DrawGrid1.FixedRows + frows;
 mmf := CreateFileMapping(fs.Handle,nil,PAGE_READWRITE,0,0,nil);
 a := MapViewOfFile(mmf,FILE_MAP_WRITE , 0, 0, 0);
 fs.Free;
 DrawGrid1.Invalidate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 UnMapViewOfFile(a);
 CloseHandle(mmf);
 fsize := 0;
 a := nil;
 DrawGrid1.Invalidate;
end;


--
С уважением, LVT.



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

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

Наверх





Память: 0.49 MB
Время: 0.036 c
1-1103646634
Der Juvas
2004-12-21 19:30
2005.01.09
Получения с помощью компонента HTML кода страницы


1-1103316518
dmk
2004-12-17 23:48
2005.01.09
Key Filter


9-1093008860
Navi1982
2004-08-20 17:34
2005.01.09
Картинку в чужой кадр!!!


4-1100790422
integer
2004-11-18 18:07
2005.01.09
Подскажите как найти в какой *.dll сидят свойства притера


6-1098456202
Лев Ландау
2004-10-22 18:43
2005.01.09
Как взять ичходник страницы с HTTPS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский