Показать сообщение отдельно
  #3  
Старый 24.03.2008, 21:49
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

Вот код. Shadow спасибо за антифриз
Код:
var
  F: File;
  ResumePos, BufferLen, SumSize: DWORD;
  hSession, hURL: Hlnternet;
  Buffer: array[1..1024] of Byte;
  err: boolean;
begin
 SumSize := 0; ResumePos := 0;  //Инициализируемся
 AssignFile(F, Edit2.Text); //Свяжемся с файлом
 IF FileExists(Edit2.Text) then //Есть ли на диске этот файл
   begin
     Reset(f,1); //Ax, есть? Откроем!
     ResumePos := FileSize(F); //Откуда докачать
     Seek(F, FileSize(F)); //А писать будем в конец
   end else ReWrite(f,1); //А раз нет, так создадим
   NADO := TRUE; //Надо качать...
   //Открыли сессию
   hSession := lnternetOpen('X-Kachalka', PRE_CONFIG INTERNET_ACCESS, nil, nil, 0);
   //И наш УРЛ
   hURL := lnternetOpenURL(hSession,PChar(Edit1.Text),nil, O, 0, O);
   //Сколько там наш файл весит?
   lnternetQueryDataAvailable(hURL, SumSize, 0, 0);
   labe4.Caption := IntToStr(SumSize); //Сообщим об этом
   if ResumePos>0 then //Если докачиваем,
     begin
          lnternetSetFilePointer(hURL,ResumePos,nil,0,0); //То сместимся
     end;
   REPEAT //Качаем
     err:= lnternetReadFile(hURL, @Buffer,SizeOf(Buffer),BufferLen); //Читаем буфер
     IF err= false then //Ошибка чтения
       begin
         ShowMessage ('Произошел облом :('); //Сообщим и выходим
         exit;
       end;
     BlockWrite(f, Buffer, BufferLen); //Пишем в файл
     Application. Processmessages;
   UNTIL (BufferLen- 0) Or (NADO= FALSE); //Качаем, пока не все или надо
 ShowMessage ('Успешно загружено!');
end;
Ответить с цитированием