 |
потоки - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
30.03.2013, 18:42
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 10.07.2011
 Сообщений: 8
 Популярность: 141
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
|
потоки
 |
Цитата: |
 |
|
|
|
|
|
|
|
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, 19:22
|
#2
|
|
|
|
Старший сержант
|
 Регистрация: 25.12.2011
 Сообщений: 191
 Популярность: 5259
 Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
|
Re: потоки
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
30.03.2013, 20:05
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 10.07.2011
 Сообщений: 8
 Популярность: 141
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: потоки
|
|
|
31.03.2013, 00:43
|
#4
|
|
|
|
Старший сержант
|
 Регистрация: 25.12.2011
 Сообщений: 191
 Популярность: 5259
 Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
|
Re: потоки
все процедуры связанные в потоком объявить в разделе потока.
Все объекты и переменные связанные с потоком занести в var потока.
Все действия с формой занести в отдельную процедуру и вызывать ее через synchronize.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
31.03.2013, 04:21
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 10.07.2011
 Сообщений: 8
 Популярность: 141
 Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 2 сообщениях
|
Re: потоки
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Все те же потоки
|
=PaLeTiZaToR= |
Вопросы и ответы, обсуждения |
6 |
09.01.2013 19:36 |
[Статья] [.NET] Потоки.
|
OrBiT_DaRk |
С/С++ |
0 |
30.11.2012 16:55 |
[Помогите!] Потоки.
|
[Na`Vi]DendI |
Вопросы и ответы, обсуждения |
23 |
31.10.2012 22:08 |
[Помогите!] потоки почему ?
|
[Na`Vi]DendI |
Вопросы и ответы, обсуждения |
3 |
11.06.2012 09:44 |
Потоки.
|
анашан |
Общение и обсуждение |
1 |
26.09.2011 16:17 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:18.
|
 |