| 
| 
 | Вопрос # 2 456/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Не могу понять, из-за чего выскакивает ошибка I/O error 6.
 Помогите пожалуйста разобраться.
 Код в приложении.
 Приложение:Переключить в обычный режим   uses WinInet; procedure TDownloadThread.Execute;var F: File;    ResumePos,BufferLen,SumSize: DWORD;    hSession, hURL: HInternet;    Buffer: array[1..1024] of Byte;    err: boolean;beginSumSize:=0; ResumePos:=0;AssignFile (F,Path);IF FileExists (path) then  begin   Reset(f,1);   ResumePos:=FileSize(F);   Seek(F, FileSize(F));  end else ReWrite(f,1);NADO:= TRUE;hSession:= InternetOpen('X-Kachalka',PRE_CONFIG_INTERNET_ACCESS,nil,nil,0);hURL := InternetOpenURL(hSession,PChar(URLPath),nil,0,0,0);InternetQueryDataAvailable(hURL, SumSize,0,0);Form1.label5.Caption:= IntToStr (SumSize);if ResumePos>0 then begin InternetSetFilePointer(hURL,ResumePos,nil,0,0); end;REPEAT err:= InternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); IF err= false then  begin   exit;  end;  Application.Processmessages;UNTIL (BufferLen= 0) Or (NADO= FALSE); end;
|  |   Вопрос задал: IlluminatI (статус: 2-ой класс)Вопрос отправлен: 25 февраля 2009, 22:40
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 26 февраля 2009, 18:15; участников в обсуждении: 4. 
|   | min@y™ (статус: Доктор наук), 26 февраля 2009, 09:24 [#1]: Цитата: Не могу понять, из-за чего выскакивает ошибка I/O error 6.
 
 
 Правильно сформулированный вопрос = 50% правильного ответа.
 В какой строке вылезает ошибка-то? Под дебаггером прогонял?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | IlluminatI (статус: 2-ой класс), 26 февраля 2009, 14:03 [#2]:я же написал в коде коментарий, на какой строке ошибка вылезает. строка:
 
 BlockWrite(f, Buffer, BufferLen); //вот тут ошибка
 |  
|   | Вадим К (статус: Академик), 26 февраля 2009, 14:24 [#3]:Да вот проблема в том, что непонятно, что такое 6 ошибка. я знаю такие 
  n:=IOResult;
   if n<>0 then
   begin
     writeln('Error encountered in reading file ',s);
     case n of
        2: writeln('File not found');
        3: writeln('Path not found');
        4: writeln('Too many open files');
        5: writeln('File access denied');
      100: writeln('Disk read error');
      101: writeln('Disk write error');
      150: writeln('Disk is write protected');
      152: writeln('Drive is not ready');
      154: writeln('CRC error in data');
      156: writeln('Disk seek error');
      157: writeln('Unknown media type');
      162: writeln('Hardware failure');
      else writeln('Various error');
     end;
     halt;
   end;Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 26 февраля 2009, 15:12 [#4]:Пардон, не заметил. А ошибка возникает при первом проходе цикла или нет?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Паровоз (статус: 10-ый класс), 26 февраля 2009, 17:57 [#5]:"непонятно, что такое 6 ошибка" { The handle is invalid. }
 ERROR_INVALID_HANDLE = 6;
 
 Проверьте, чему равен Path.
 |  
|   | IlluminatI (статус: 2-ой класс), 26 февраля 2009, 18:08 [#6]:Path:=Edit2.Text; 
 Ошибка при первом прохождении цикла, он по логике должен читать файл по 1024, а потом записывать их в файл. (функция, для скачивания файла из интернета).
 
 И еще: эта функция создается в отдельном потоке, может быть, нельзя работать с файлами в потоке? (т.е писать отдельную процедуру и через синхронизацию?)
 |  
|   | IlluminatI (статус: 2-ой класс), 26 февраля 2009, 18:15 [#7]:да мое предположение было верным   открытие файла вынес за пределы потока, все заработало) спасибо всем.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |