Fat12 вывод секторов дискеты в delphi

Здравствуйте, прошу помочь с отладкой программы для вывода секторов дискеты в Memo. Есть код программы которая выводит содержимое секторов, но не правильно. Задача: разобраться в структуре fat12 через вывод секторов в delphi Вот код который есть:
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
 Button1: TButton;
 Memo1: TMemo;
 Edit1: TEdit;
 Label1: TLabel;
 Label2: TLabel;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var h: THandle; buf: array [1..512] of char; nb: dword;
 sector, i: integer; s: string;
begin sector:=StrToInt(Edit1.Text); nb:=0;
h := CreateFile('\\.\A:', GENERIC_READ, FILE_SHARE_READ, nil,
 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if h <> INVALID_HANDLE_VALUE
 then begin SetFilePointer(h, 512*sector, nil, FILE_BEGIN);
 ReadFile(h, buf, 512, nb, nil);
 CloseHandle(h);
 Memo1.Lines.Clear;
 s:=''; FOR i:=1 TO 512
 DO IF buf[i]<>CHR(0) THEN s:=s+buf[i];
 Memo1.Lines.Add(s);
 end
 else showmessage('error: '+IntToStr({GetLastError}h));
Label1.Caption:='Прочитано байт: '+IntToStr(nb);
end;

end.
___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (кнопочка на панели форматирования с решёточкой #) Не забывайте об этом!Модератор.
6 ответов

А как ты понял что это неправильно?


содержимое секторов выводится без нулей из за этого вся строка не то что нужно


Сам же нули не выводишь, да и выводить нужно, если уж в мемо, то в HEX-формате


выводить нужно, если уж в мемо, то в HEX-формате
Вот именно. Мемо только печатные символы допускает.


а как тогда сделать? чтоб корректно выводилось?


s:='';
FOR i:=1 TO 512 DO s:=s+IntToHex(Ord(buf[i]),2);