Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

потоки

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 30.03.2013, 17:42   #1
 Разведчик
Аватар для llbumerll
 
llbumerll на правильном путиllbumerll на правильном пути
Регистрация: 10.07.2011
Сообщений: 8
Популярность: 141
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
Отправить сообщение для llbumerll с помощью Skype™
 
Question потоки

Цитата:
unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,ShellAPI,
Unit2, Vcl.Menus, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, Vcl.ComCtrls;

type
MyThr = class(TThread)
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
Timer3: TTimer;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Frame21: TFrame2;
Memo1: TMemo;
Timer4: TTimer;
Edit1: TEdit;
Memo2: TMemo;
N7: TMenuItem;
ProgressBar1: TProgressBar;
Label1: TLabel;
Timer5: TTimer;
IdHTTP1: TIdHTTP;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure Frame21Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure N4Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
procedure IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
//========================
window:hwnd;
time,ox,oy:integer;
UserName : string;
UserNameLen : Dword;
Str1: String;
shifr:integer;
//========================
HTTP:TIdHTTP;
Response:TFileStream;
s:string;
Version:TStringList;
//========================
implementation

{$R *.dfm}

uses Unit3, Unit4;

procedure GetIntetFile(URL, SavetoFile: string);
var
TM: TMemoryStream;
begin
try
TM:= TMemoryStream.Create;
Form1.idhttp1.Get(URL,TM);
//application.ProcessMessages;
//form1.ProgressBar1.Position := form1.ProgressBar1.Position + form1.idHTTP1.AuthRetries;
finally
form1.ProgressBar1.Position:=0;
form1.ProgressBar1.Visible:=false;
form1.Label1.Visible:=false;
Showmessage('Загрузка завершена, ищите файл в c:\File.exe');
end;
TM.Free;
end;


procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Int64);
begin
ProgressBar1.Position:=AWorkCount;//количество скачаного на данный момент
ProgressBar1.Update
end;

procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
ProgressBar1.Position:=0;
ProgressBar1.max:=AWorkCountMax;//Размер файла
end;

procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
ProgressBar1.Position:=0;
ProgressBar1.Update
end;




procedure MyThr.Execute;
begin
HTTP:=TIdHTTP.Create(nil); //создадим TIdHTTP и TStringList
Version:=TStringList.Create;
s:=HTTP.Get('http://мой сайт/version.txt'); //Теперь отправим Get запрос на адрес, по которому на сервере лежит файл "version.txt", подгружая Response в переменную "s"
Version.LoadFromFile('C:\version.txt'); //Теперь подгрузим содержимое файла "version.txt", который находится в папке с Updater'ом, в переменную "Version":

if Pos(s,Version.Text)<>0 then
begin
//ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
form1.Label1.Visible:=true;
form1.ProgressBar1.Visible:=true;
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
GetIntetFile('http://мой сайт/File.exe','c:\File.exe');
end;
end;

end.


лишь часть моей программы, при обновлении форма виснет, что бы я ни делал, как ето можно исправить ?
  Ответить с цитированием
Старый 30.03.2013, 18:22   #2
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: потоки

Проще переписать код, чем исправлять этот. процедуры объявлены в главном потоке, сам индеец объявлен в главном потоке, работу с ним ведешь из дополнительного.
Цитата:
//ShowMessage('Обновления не обнаружено. Текущая версия программы - последняя')
end
else
begin
form1.Label1.Visible:=true;
form1.ProgressBar1.Visible:=true;
ShowMessage('Обнаружено обновление. Сейчас начнётся загрузка новой версии программы.');
GetIntetFile('http://мой сайт/File.exe','c:\File.exe');

За это просто гнать метлой
В общем рекомендую сначала прочитать про потоки, а уже потом брать готовые примеры.
  Ответить с цитированием
Старый 30.03.2013, 19:05   #3
 Разведчик
Аватар для llbumerll
 
llbumerll на правильном путиllbumerll на правильном пути
Регистрация: 10.07.2011
Сообщений: 8
Популярность: 141
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
Отправить сообщение для llbumerll с помощью Skype™
 
По умолчанию Re: потоки

Цитата:
Сообщение от metrazПосмотреть сообщение
Проще переписать код, чем исправлять этот. процедуры объявлены в главном потоке, сам индеец объявлен в главном потоке, работу с ним ведешь из дополнительного.

За это просто гнать метлой
В общем рекомендую сначала прочитать про потоки, а уже потом брать готовые примеры.

подскажите хотя бы что надо в поток писать, т.к. углубляться в потоки нет желания пока что, мне всего лишь надо чтобы програмка обновлялась и при етом, что бы не висла, впринципе она и так норм обновляется но при любом нажатии на форму, она просто виснет и всё.
  Ответить с цитированием
Старый 30.03.2013, 23:43   #4
 Старший сержант
Аватар для metraz
 
metraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядомmetraz в состоянии испепелить взглядом
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
Отправить сообщение для metraz с помощью Skype™
 
По умолчанию Re: потоки

все процедуры связанные в потоком объявить в разделе потока.
Все объекты и переменные связанные с потоком занести в var потока.
Все действия с формой занести в отдельную процедуру и вызывать ее через synchronize.
  Ответить с цитированием
Старый 31.03.2013, 04:21   #5
 Разведчик
Аватар для llbumerll
 
llbumerll на правильном путиllbumerll на правильном пути
Регистрация: 10.07.2011
Сообщений: 8
Популярность: 141
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
Отправить сообщение для llbumerll с помощью Skype™
 
По умолчанию Re: потоки

Цитата:
Сообщение от metrazПосмотреть сообщение
все процедуры связанные в потоком объявить в разделе потока.
Все объекты и переменные связанные с потоком занести в var потока.
Все действия с формой занести в отдельную процедуру и вызывать ее через synchronize.

спасибо, я хоть и не отец делфи но разобраться попробую
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Все те же потоки =PaLeTiZaToR= Вопросы и ответы, обсуждения 6 09.01.2013 18:36
[Статья] [.NET] Потоки. OrBiT_DaRk С/С++ 0 30.11.2012 15:55
[Помогите!] Потоки. [Na`Vi]DendI Вопросы и ответы, обсуждения 23 31.10.2012 21:08
[Помогите!] потоки почему ? [Na`Vi]DendI Вопросы и ответы, обсуждения 3 11.06.2012 09:44
Потоки. анашан Общение и обсуждение 1 26.09.2011 16:17

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 18:48.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net