![]() |
|
#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. |