
24.03.2008, 21:49
|
Новичок
|
|
Регистрация: 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;
|