не могу нормально пользоваться ReadFile
От: balykovdron Россия  
Дата: 17.04.03 07:02
Оценка:
Вот код. Вопросы:
1. Почему в конце возникает "Access Violation..."
2. Почему, если я ставлю BlockSize = больше чем 2К (например я хочу читать блоками по 64К = 65536, например для больших файлов), то ReadFile возвращает 'Fuck again'.
3. И если все успешно, то в BP оказываются считанные данные. У меня не получается загнать это в строку.

Подскажите уважаемые гуру что я делаю не так

procedure TForm1.Button1Click(Sender: TObject);
var
  fSrc: string;
  StartByte: integer;
  BP : array of byte;
  hFile, cRet, BytesWorked, BlockSize: Cardinal;
  srcFileSize: DWORD;
  bRet: Boolean;
begin
  fSrc := 'C:\autoexec.bat';
  hFile := CreateFile(PChar(fSrc), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  srcFileSize := GetFileSize(hFile, nil);
  //ShowMessage('File size = ' + IntToStr(srcFileSize) + ' Err = ' + IntToStr(GetLastError));
  StartByte := 0;
  BlockSize := 1024;
  cRet := SetFilePointer(hFile, StartByte, nil, FILE_BEGIN);
  SetLength(BP, Sizeof(byte) * BlockSize);
  bRet := ReadFile(hFile, BP, BlockSize, BytesWorked, nil);
  if BytesWorked > 0 then
    ShowMessage('OK')
  else
    ShowMessage('Fuck again! :(');
  CloseHandle(hFile);
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.