ZeitGeist7
Сообщений: 67
Оценки: 0
Присоединился: 2008-09-21 21:58:46.603333
|
забыл добавить что я потом буду добавлять к этой проге ещё код который будет переводить xml в txt файлы. может никто и не сможет помочь готовыми прожками но с куском кода думаю народ поможет
var F: File;
ResumePos,BufferLen,SumSize: DWORD;
hSession, hURL: HInternet;
Buffer: array[1..1024] of Byte;
err: boolean;
begin
SumSize:=0; ResumePos:=0; //Инициализируемся
AssignFile (F,SaveWayEdit.Text); //Свяжемся с файлом
IF FileExists (SaveWayEdit.Text) 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(LinkEdit.Text),nil,0,0,0);
//Сколько там наш файл весит?
InternetQueryDataAvailable(hURL, SumSize,0,0);
label4.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
ShowMessage ('Произошел облом :('); //Сообщим и выходим
exit;
end;
BlockWrite(f, Buffer, BufferLen); //Пишем в файл
Application.Processmessages;
UNTIL (BufferLen= 0) Or (NADO= FALSE); //Качаем, пока не все или надо
ShowMessage ('Успешно загружено!');
end;
я в этом ни зуб ногой. как сделать чтобы шла не докачка а новое скачивание, но при этом если соединение вдруг пропало файл докачался. заранее благодарю!).
|