![]() |
|
|
#1
|
|||
|
|||
|
Хочу запустить код в отдельном потоке, классы не изучал. Наткнулся на код примера:
Код:
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TNewThread }
procedure TNewThread.Execute;
begin
while true do {ничего не делаем};
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NewThread: TNewThread;
begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpLower;
NewThread.Resume;
end;Вот не пойму, как можно сделать этот пример на простой форме, ни как не запускается (( Последний раз редактировалось Admin, 07.10.2010 в 21:31. |
|
#2
|
||||
|
||||
|
Так ну что.
Код:
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;TNewThread - Название нового класс. Это примерно как: Код:
Элекстрчка = class(поезд) и что мы можем делать с поездом? правильно Execute (открывать) или аналог в реальном мире "заводить" дыр-дыр-дыр. Дальше опишем как мы этот Дыр-Дыр-Дыр реализуем... Аффтар реализует его вот такКод:
procedure TNewThread.Execute;
begin
while true do {ничего не делаем};
end;А дальше создаём кнопку и ей пишем: Код:
procedure TForm1.Button1Click(Sender: TObject); var NewThread: TNewThread; // говорим программе что мы хотим использовать // новую электричку типа Поезд. begin NewThread:=TNewThread.Create(true); //строим поезд NewThread.FreeOnTerminate:=true; // не знаю :confused: не могу узнать при желании NewThread.Priority:=tpLower; // приоритет потока, низкий NewThread.Resume; // тоже не знаю но тоже могу узнать end; Последний раз редактировалось Uniq!, 07.10.2010 в 21:33. |
|
#3
|
|||
|
|||
|
Admin извините, первый раз на форуме, а как создать новый класс, просто добавить код в форму? или как то отдельно создавать?
И можно полный листинг для примера, не понимаю куда вписать Цитата:
Последний раз редактировалось Grimm, 07.10.2010 в 21:51. |
|
#4
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TNewThread.Execute;
begin
while true do {ничего не делаем};
end;
end.Последний раз редактировалось Uniq!, 07.10.2010 в 21:55. |
|
#5
|
|||
|
|||
|
Огромное спасибо!
|
|
#6
|
|||
|
|||
|
PHP код:
|
|
#7
|
||||
|
||||
|
Процедуру описать обязательно надо.
Это примерно как записать в словарь слово, и не написать как оно переводиться. Бессмысленная книжка) |
|
#8
|
|||
|
|||
|
Ясно. Теперь вопрос в том, чтобы поток создавался по нажатию кнопки.. Можно пример, например с выводом сообщения пользователю в отдельном потоке, по кнопке.
попробывал так: - работает по кнопке, но как сюда вставить вывод сообщения? Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TNewThread.Execute;
begin
while true do {ничего не делаем};
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NewThread: TNewThread;
begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpLower;
NewThread.Resume;
end;
end.Последний раз редактировалось Admin, 07.10.2010 в 22:54. |
|
#9
|
|||
|
|||
|
Всем огромное спасибо за внимание! Разобрался во всем, что хотел.
![]() |
|
#10
|
|||
|
|||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TNewThread.Execute;
begin
ShowMessage('Потоки в delphi.');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NewThread: TNewThread;
begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpLower;
NewThread.Resume;
end;
end. |