Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2013, 13:42   #1
Yrik
 
Регистрация: 17.12.2013
Сообщений: 4
По умолчанию 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]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 17.12.2013 в 14:16.
Yrik вне форума Ответить с цитированием
Старый 17.12.2013, 14:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А как ты понял что это неправильно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.12.2013, 18:16   #3
Yrik
 
Регистрация: 17.12.2013
Сообщений: 4
По умолчанию

содержимое секторов выводится без нулей из за этого вся строка не то что нужно
Yrik вне форума Ответить с цитированием
Старый 17.12.2013, 18:19   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сам же нули не выводишь, да и выводить нужно, если уж в мемо, то в HEX-формате
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.12.2013, 18:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
выводить нужно, если уж в мемо, то в HEX-формате
Вот именно. Мемо только печатные символы допускает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.12.2013, 14:55   #6
Yrik
 
Регистрация: 17.12.2013
Сообщений: 4
По умолчанию

а как тогда сделать? чтоб корректно выводилось?
Yrik вне форума Ответить с цитированием
Старый 18.12.2013, 15:40   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
s:='';
FOR i:=1 TO 512 DO s:=s+IntToHex(Ord(buf[i]),2);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с FAT12 (С/C++) Girei Помощь студентам 0 05.11.2013 02:48
Количество секторов и размер диска Napkin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.04.2011 00:50
Получение адреса кластера из таблицы в файловой системе FAT12 anyx Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 28.02.2011 14:26
работа с FAT12, переделать программу ViSaDeR Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.12.2010 17:09
файловая система FAT12/16, проблемы с извлечением файлов.. EdwardSt Общие вопросы Delphi 0 24.05.2009 16:32