Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

Ошибка при обращении к процедуре BlockRead   Найти похожие ветки 

 
Tolik   (2004-05-22 02:23) [0]

Вот небольшая програмка, копирующая файл Test.dat в Test1.dat:

var
 Buf:array of Word;
 F,F1:File;

begin

AssignFile(F,"c:\Test.dat");

Reset(F,1);

AssignFile(F1,"c:\Test1.dat");

Rewrite(F1,1);

SetLength(Buf,FileSize(F));

BlockRead(F,Buf,FileSize(F); //тут возникает ошибка ElnOutError "I/O 87" ! А почему?
BlockWrite(F1,Buf,FileSize(F));

CloseFile(F);
CloseFile(F1);

end;

Если использовать статический массив Buf, то никаких ошибок не возникает, но с динамическим
какие-то проблемы. Насколько я знаю в Delphi4 нельзя использовать динамические массивы в
качестве буфера из-за недоработки процедур BlockRead/BlockWrite, но в Delphi5 и 6 эта
недоработка была исправлена. У меня установлена Delphi6. Из-за чего возникает эта ошибка?
Еще. В Delphi help BlockRead описывается так:

procedure BlockRead(var F: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);

однако у меня в редакторе кода она (при подсказке синтаксиса) имеет вид:

var F: File; var Buf; Count: Integer [; var Result: Integer].


 
Johnmen ©   (2004-05-22 02:30) [1]

Не мучай себя

var
Buf:array of byte;


 
Германн ©   (2004-05-22 03:14) [2]

Имхо, насколько помню, второй параметр процедуры BlockRead должен являться указателем на первый байт той области, куда будут записаны данные.
Имхо следует писАть BlockRead(F,Buf[0],FileSize(F);


 
Anatoly Podgoretsky ©   (2004-05-22 12:32) [3]

Не стоит загонять столько данных в переменную у которой размер всего 4 байта. ShowMessage(IntToStr(SizeOf(buf))



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

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
14-1085057631
Соловьев
2004-05-20 16:53
2004.06.06
http://www.grineflip.dk/funstuff/kill/kill.htm#


14-1083617499
Piter
2004-05-04 00:51
2004.06.06
Фото, видео и аудио материалы со встреч, проводимых этим сайтом


6-1082099598
-=Rezya=-
2004-04-16 11:13
2004.06.06
Низкоуровневый сервер


14-1084705910
Marser
2004-05-16 15:11
2004.06.06
Н-даа...


1-1085296596
Natalia
2004-05-23 11:16
2004.06.06
Проблема при подключении С-ной DLL.