Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прервать закачку файла по HTTP [D7, WinXP]


MAMBA ©   (2006-04-14 08:27:00) 

Качаю файл из инета с помощью функции

function GetInetFile (const fileURL, FileName: String): boolean;
       const BufferSize = 1024;
var
       hSession, hURL: HInternet;
       Buffer: array[1..BufferSize] of Byte;
       BufferLen: DWORD;
       rrr : integer;
       hhh,ddd: real48;
       f: File;
       sAppName,  vvv: string;
begin
 Result:=False;
 frmMain.btnLoad.Enabled := 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
 frmMain.ProgressBar.Max := Strtoint(GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH, ' http://10.252.205.13/Update/Izm/w.exe'));
 AssignFile(f, FileName);
 Rewrite(f,1);
 rrr := 0;
 hhh := strtofloat(GetUrlInfo(HTTP_QUERY_CONTENT_LENGTH, ' http://хх.ххх.ххх.хх/Update/Izm/w.exe'));
 vvv := format('%.2f kb',[hhh/1000]);
repeat
 Application.ProcessMessages;
 InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
 frmMain.lblProg.Caption := 'Размер обновлений - ' + vvv + ' всего';
 frmMain.lblProg.Update;
 frmMain.lblProgress.Caption := 'Получено - ' + format('%.2f kb',[rrr/1000]);
 frmMain.lblProgress.Update;
 frmMain.ProgressBar.Position := frmMain.ProgressBar.Position + BufferLen;
 BlockWrite(f, Buffer, BufferLen);
 rrr := rrr + BufferLen;

until BufferLen = 0;
 CloseFile(f);
 Result:=True;
finally
 InternetCloseHandle(hURL)
end
finally
 InternetCloseHandle(hSession)
end
end;

Надо обработать нажатие кнопки Отмена, т.е. прервать загрузку файла. Вопрос - как?


Сергей М.   (2006-04-14 09:03:00) [1]


> как?


Вставить в тело цикла проверку состояния флага, взводимого в обработчике события OnClick кнопки "Отмена", т.е. проверку на условие досрочного выхода из цикла.


Наверх

Титульная страница Поиск, карта сайта Написать письмо