![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InternetReadFile + BlockWrite + ProgressBar , помогите ... [D7, WinXP]
IgorT © (2008-02-18 23:21:00)Вобщем, есть такая функция для скачивания файлов из инета, но никак не могу дойти как прикрепить к ней прогресс бар ?(прикрепить то я прикреплю, надо чтобы он коректно работал, ато у меня не получается - разов по 20 проходит :) , неправильный код об прогресе я не вставлял... )
Вот код самой процедуры :
function GetInetFile
(const fileURL, FileName: String): boolean;
const BufferSize = 1024;
var
hSession, hURL: HInternet;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
f: File;
sAppName: string;
begin
Result:=False;
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName),
INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
try
hURL := InternetOpenURL(hSession,
PChar(fileURL),
nil,0,0,0);
try
AssignFile(f, FileName);
Rewrite(f,1);
repeat
Application.ProcessMessages;
if u=true then
begin
CloseFile(f);
DeleteFile('new.ini');
DeleteFile('new.rar');
Clipboard.Clear;
Result:=False;
exit;
end;
InternetReadFile(hURL, @Buffer,
SizeOf(Buffer), BufferLen);
BlockWrite(f, Buffer, BufferLen);
until BufferLen = 0;
CloseFile(f);
Clipboard.Clear;
Result:=True;
finally
InternetCloseHandle(hURL)
end
finally
InternetCloseHandle(hSession)
end
end;
IgorT (2008-02-20 21:15:00) [1]Вопрос решен, решения здесь - http://forum.sources.ru/index.php?act=ST&f=14&t=223785
Сергей М. (2008-02-19 09:52:00) [2]
> IgorT © (19.02.08 01:11) [2]
http://www.google.ru/search?aq=f&complete=1&hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=b0g&q=Delphi+internetreadfile+progressbar&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru
IgorT (2008-02-19 01:11:00) [3]етым кодом мы узнаем только вес самого файла на сервере ? Или мы должны подавать на него уже вытащеный размер ? Я с прогресс барамы никогда не работал, обясните пожалуйста все по простому, растолкуйте плз
Compiler (2008-02-19 00:18:00) [4]Перед скачиванием нужно наверно размер файла узнать.
dwBufferLen, dwIndex: DWORD;
dwBuffer: Pointer;
...
dwIndex := 0;
dwBufferLen := 20;
HttpQueryInfo(URL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex)
Размер файла должен быть тут dwBuffer