Ver Mensaje Individual
  #8  
Antiguo 29-02-2008
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
Es mucho mas simple que todo lo que estas haciendo con el stringrid, un ejemplo:

Código Delphi [-]
unit Unit1;

interface

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

type
  TFormFile = class(TForm)
    FileGrid: TDrawGrid;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FileGridDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
    FFileStream: TFileStream;
  public
    { Public declarations }
  end;

var
  FormFile: TFormFile;

implementation

{$R *.dfm}

procedure TFormFile.FormCreate(Sender: TObject);
begin
 FFileStream:= TFileSTream.Create('c:\windows\explorer.exe',fmOpenRead);
 FileGrid.RowCount:= ((FFileStream.Size + FileGrid.ColCount - 1) div FileGrid.ColCount) + 1;
end;

procedure TFormFile.FormDestroy(Sender: TObject);
begin
 FFileStream.Free;
end;

procedure TFormFile.FileGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
 Car:Char;
begin
  FFileStream.Position:= ARow * FileGrid.ColCount + ACol;
  FFileStream.Read( Car,1);
  FileGrid.Canvas.TextRect(Rect,Rect.Left,Rect.Top, IntToHex(Ord(Car),2) );
end;

end.

Faltarian algunos detallitos como comprobaciones para evitar que se pinte una fila y coordenada que realmente
no se corresponde con ningun byte en el fichero en la ultima fila de grid, pero bueno deberia ser suficiente para
darte una idea de como se hace y solo falta ampliarlo un poco para que muestre la informacion en ascii, etc.

Saludos

Última edición por Mick fecha: 29-02-2008 a las 19:06:22.
Responder Con Cita