Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

InternetReadFile + BlockWrite + ProgressBar , помогите ...   Найти похожие ветки 

 
IgorT ©   (2008-02-18 23:21) [0]

Вобщем, есть такая функция для скачивания файлов из инета, но никак не могу дойти как прикрепить к ней прогресс бар ?(прикрепить то я прикреплю, надо чтобы он коректно работал, ато у меня не получается - разов по 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;



 
Compiler ©   (2008-02-19 00:18) [1]

Перед скачиванием нужно наверно размер файла узнать.

dwBufferLen, dwIndex: DWORD;
dwBuffer: Pointer;
...
dwIndex  := 0;
dwBufferLen := 20;
HttpQueryInfo(URL, HTTP_QUERY_CONTENT_LENGTH, @dwBuffer, dwBufferLen, dwIndex)


Размер файла должен быть тут dwBuffer


 
IgorT ©   (2008-02-19 01:11) [2]

етым кодом мы узнаем только вес самого файла на сервере ? Или мы должны подавать на него уже вытащеный размер ? Я с прогресс барамы никогда не работал, обясните пожалуйста все по простому, растолкуйте плз


 
Сергей М. ©   (2008-02-19 09:52) [3]


> 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-20 21:15) [4]

Вопрос решен, решения здесь - http://forum.sources.ru/index.php?act=ST&f=14&t=223785



Страницы: 1 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
15-1238790611
Юрий
2009-04-04 00:30
2009.06.07
С днем рождения ! 4 апреля 2009 суббота


15-1238793616
Германн
2009-04-04 01:20
2009.06.07
Копирование документов для отправки их по электронной почте.


3-1222218828
РФМ
2008-09-24 05:13
2009.06.07
Наличие картинки


4-1210848857
nick_sniper2
2008-05-15 14:54
2009.06.07
Как остановить "завершение работы Windows"?


3-1222029089
Раиса
2008-09-22 00:31
2009.06.07
ClientDataSet и Insert .... select ... from что?