Показать сообщение отдельно
  #5  
Старый 11.01.2011, 10:06
ShenZN ShenZN вне форума
Прохожий
 
Регистрация: 10.01.2011
Сообщения: 5
Репутация: 10
По умолчанию Считывание с карты памяти

Доброго времени суток!

Возникла похожая проблема. Нужно считать по байтно каждый сектор карты памяти Flash (SD card, micro SD). Так как там записаны данные без использования файловой системы. Посмотрев код первого сообщения и порывшись в интернете написал такую процедуру:
Код:
var
df : THandle;
nb, sector : cardinal;
buf : array [0..512] of cardinal;
// ??? buf: string;
i: integer;
begin
  sector:=512;
  nb:=0;
 df := CreateFile(PChar('\\.\F:'),
                   GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if df <> 0 then
  begin
   SetFilePointer(df, 512, nil, FILE_BEGIN);
   ReadFile (df, buf, sector,nb,nil);
   if (debug) then
    begin
      for i:=1 to 511 do
      begin
      Form5.Memo1.Lines.Add(IntToStr(buf[i]));
      end;
    end;
  end;
  CloseHandle(df);
end;

Подскажите пожалуйста, может я что то не так делаю. При выполнении какие-то данные выводит, но они похожи на мусор. Непонятно так же в какого типа должна быть переменная BUF в функции ReadFile, то есть указатель какого типа. Числовой или строчный. И вообще в каком формате происходит считывание с носителя, нужно получить каждый байт каждого сектора.

Огромное спасибо!
Ответить с цитированием