Доброго времени суток!
Возникла похожая проблема. Нужно считать по байтно каждый сектор карты памяти 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, то есть указатель какого типа. Числовой или строчный. И вообще в каком формате происходит считывание с носителя, нужно получить каждый байт каждого сектора.
Огромное спасибо!