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

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

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

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

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,151
Симпатии
222
Баллы
155
VK
Создаем поток: Нажимаем 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 Оффлайн

triamera977

Homo habilis
Принятый Кодер
Сообщения
81
Симпатии
12
Баллы
60
Здравствуйте. Хотел добавить после загрузки программы (когда 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 Оффлайн

triamera977

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

end;
 
Lomanu4 Оффлайн

Lomanu4

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