Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.03.2008, 10:58
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
Сообщение Скачивание файла

1. Недавно начал делать прогу которая скачивает файлы из интернета. При скачивании форма тормозит. Что надо сделать чтобы форма не тормозила при скачивании?
2. Как определить размер скачиваемого файла в килобайтах?
Заранее спасибо
Ответить с цитированием
  #2  
Старый 24.03.2008, 16:47
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Чем качаешь? Если IdHTTP, то в событии OnWorkBegin есть константа - AWorkCountMax содержит размер файла в байтах.
Чтобы не тормозила программа добавь на форму компонент IdAntiFreez
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #3  
Старый 24.03.2008, 21:49
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter