Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Скачать файл в потоке| Download file in the stream (DelphiEX7)

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155
Создаем поток: Нажимаем File / Othert екобъ т потока
Копируем только часть потока как это указано ниже, закрываем окошко с потом и вставляем его в нашу главную форму.

Код:
 введите
  Tthreed = класс (TThread)
  частный
    {Частные декларации}
  защищенный
    Процедура SetProgress;
    Процедура Выполнить; отмена;
  конец;[/ CODE]


В глобальных перемеренных объявляем наш поток
[CODE] Var
Form1: TForm1;
Поток: Tthreed; [/ CODE]


На форму кидаем кнопку, прогрессбар, idhttp

Нажимаем на кнопку и пишем наш код, который будет запускать поток.


[CODE] Поток: = Tthreed.Cread (False); [/ CODE]

В теле потока пишем следующий код

[CODE] Var

  Strem: TMemoryStream;
начать

  Strem: = TMemoryStream.Create;
  пытаться
    Form2.IdHTTP1.Get ('http://lomanu4.at.ua/Launcher.zip', Strem);
    Form2.IdHTTP1.Response.RawHeaders.Text;

    strem.SaveToFile ("Launcher.zip ');
  в конце концов
    Form2.IdHTTP1.Free;
    strem.Free;
  конец; [/ CODE]

В компоненте idhttp находим событие WorkBegin и работа
Создаем код


[CODE] Процедура TForm2.IdHTTP1WorkBegin (ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64); Процедура Выполнить; отмена;
начать

  ProgressBar1.Position: = 0;
  ProgressBar1.Max: = AWorkCountMax;

конец;


Процедура TForm2.IdHTTP1Work (ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
начать
  ProgressBar1.Position: = AWorkCount;

конец;


[/ CODE]

Если вы нечего не поняли вот видео урок http://youtu.be/ERQAHGqSSCQ
 
Последнее редактирование:

triamera977

Homo habilis
Принятый Кодер
Регистрация
27 Апр 2015
Сообщения
81
Баллы
60
Возраст
30
Местоположение
Калининград
Сайт
kil39.ru
Здравствуйте. Хотел добавить после загрузки программы (когда progressbar =100) вывести сообщение. Вроде все сделал, но после достижения загрузки 100% начинают бесконечно вылазить данные сообщения. Подскажите пожалуйста в чем моя ошибка?

procedure TForm1.sbtn2Click(Sender: TObject);
begin
potok:=TPotok.Create(False);
Form1.pb1.Visible:=True;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin

if pb1.Position=pb1.Max then
begin
ShowMessage('Программа загружена');
tmr1.Enabled:=False;
end;


end;

{ TPotok }

procedure TPotok.Execute;
var
stream:TMemoryStream;
begin

stream:=TMemoryStream.Create;
try
Form1.idhtp2.Get('

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


stream.SaveToFile('as-1w.rar');
finally
Form1.idhtp2.Free;
stream.Free;
end;


end;
 

Вложения

triamera977

Homo habilis
Принятый Кодер
Регистрация
27 Апр 2015
Сообщения
81
Баллы
60
Возраст
30
Местоположение
Калининград
Сайт
kil39.ru
Получилось всетаки самому решить проблемку, оказывается надо было написать так
procedure TForm1.tmr1Timer(Sender: TObject);
begin
if pb1.Position=pb1.Max then
begin
tmr1.Enabled:=False; -с начало выключаем таймер
ShowMessage('Программа загружена'); - только после этого выводим окно

end;
 

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,184
Баллы
155
если вы хотите в потоке обращаться к компоненту , всегда нужно делать ( form1) к примеру номер 1 и потом указывать компонент.
 
Вверх