Вниз
Скачать: CL | DM;

TFileStream?   Найти похожие ветки 

 
Beregin   (2003-05-24 19:23) [0]

Делаю:

var ln, pos: Integer;
buf: PChar;
ReadFile: TFileStream;
begin
Pos:=0;
ln:=128;

{Открываем файл для чтения}
ReadFile := TFileStream.Create("test.rar", fmOpenRead);

while Pos < ReadFile.Size do
Begin
if ln > (ReadFile.Size - Pos) then ln:=ReadFile.Size - Pos;
GetMem(buf,ln+1);
ReadFile.Seek(pos,soFromBeginning);
ReadFile.ReadBuffer(buf,ln);
pos:=pos+ln;
End;
FreeMem(buf);
ReadFile.Free;

Говорит что неправильный доступ к памяти. RTFM как мог делал – не помогло.
Объясните где я дурак… Нужно именно через TFileStream


 
jack128 ©   (2003-05-24 19:31) [1]

выделяешь память в цикле (несколько раз), а освобождаешь 1 раз после цикла - отсюда и ошибка


 
Beregin   (2003-05-24 22:51) [2]

Спасибо что ответил, ты конечно прав. Но дело не в этом, точнее не только в этом. Максимально упростил код:

var ln, pos : Integer;
buf: PChar;
RFile: TFileStream;

begin
Pos:=1;
ln:=128;
RFile := TFileStream.Create("test.rar", fmOpenRead);
GetMem(buf,ln+1);
RFile.Seek(pos,soFromBeginning);
RFile.ReadBuffer(buf,ln); {После этого ошибка!}
FreeMem(buf);
RFile.Free;
end;

Ошибка возникает при вызове FreeMem(buf);
Но самое иинтересное, что если закоментировать
RFile.ReadBuffer(buf,ln);
то все работает нормально...
Долго втыкал в хелп по поводу ReadBuffer и Read но так и не понял где ошибка. Наверно я глуповат. Чую что ошибка в моем не понимание каких то основ. Но где понять не могу - я же этого не знаю... :)


 
jack128 ©   (2003-05-25 00:29) [3]

RFile.ReadBuffer(buf ^,ln); - классическая ошибка :-)


 
Beregin   (2003-05-25 16:14) [4]

Спасибо уже понял!:) Долго ругал товарищей писавших статью - не стоит доверять тому что пишут. Но все равно спасибо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.016 c
7-13483
Shuric
2003-04-03 18:32
2003.06.05
Не напомнит ли кто (про реестр)


11-13105
AlbertHakimov
2002-09-12 13:48
2003.06.05
Компонент TKOLImageList


3-13028
*pavel
2003-05-16 11:50
2003.06.05
ODAC или DOAC


1-13261
Q
2003-05-22 17:15
2003.06.05
работа с PChar


1-13198
JS
2003-05-26 19:53
2003.06.05
drag and drop внешних объектов




   Наверх