Задание: Вычислить расположение и начальный кластер заданного каталога на диске. Прочитать содержимое каталога по всем его кластерам в память.
Мысль такая) В DriveComboBox выбираем диск, в DirectoryListBox каталог. Далее необходимо найти первый кластер каталога, сколько он занимает кластеров и передать в эту процедуру:
procedure TForm1.Button3Click(Sender: TObject);
var hDevice: THandle;
    mbr: TSectorBuffer;
    Buffer1: String;
    i,j:Byte;
    k:Integer;
begin
  Memo1.Clear;
  hDevice:=CreateFile(PChar('\\.\'+DriveComboBox1.Drive+':'), GENERIC_READ, FILE_SHARE_READ
  or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
  if hDevice = INVALID_HANDLE_VALUE then
  begin Memo1.Lines.Add('Invalid handle name'); Exit; end;
  for k:=SpinEdit1.Value to SpinEdit1.Value+SpinEdit2.Value-1 do
  begin
    if not ReadSector(hDevice, k, mbr) then
    begin Memo1.Lines.Add('Error number '+IntToStr(GetLastError)+'for sec: '+IntToStr(k)); end
    else
    begin
      Memo1.Lines.Add('Sector: '+IntToStr(k));
      Buffer1:='';
      for i:=1 to 32 do
      begin
        for j:=1 to 16 do
        begin
            Buffer1:=Buffer1+IntToHex(mbr[16*(i-1)+j], 2)+' ';
        end;
        Memo1.Lines.Add(Buffer1);
        Buffer1:='';
      end;
    end;
  end;
  CloseHandle(hDevice);
end;
function TForm1.ReadSector(h: THandle; sec: Int64; var buf: TSectorBuffer): Boolean;
var i:DWORD;
begin
  SetFilePointer(h, sec*512, 0, FILE_BEGIN);
  Result := ReadFile(h, buf, SizeOf(buf), i, POverlapped(0));
end;
вместо SpinEdit'ов. Вопрос как?) Не смог найти апи функцию которая это делает((