|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Проблемы с потоками (Ненавижу!)
Блин, я уже задолбался с TThread'ами Вроде бы все делаю по инструкции - так нет, выдает, зараза, ошибку!Вот исходник, подскажите, что не так-то? Может кто нибудь нормально объяснить, как работать с потоками (хотя бы просто через поток вывести сообщение 'ololo')? А то голова скоро взорвется...
|
#2
|
||||
|
||||
Если на сайте mapper720.ru было непонятно:
В поток: Код:
unit Unit2; interface uses Classes, Unit1; type TMyThread = class(TThread) private { Private declarations } protected procedure Execute; override; end; implementation { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { TThread } procedure TMyThread.Execute; begin { Place thread code here } end; end. Код:
unit Unit2; interface uses Classes, Unit1, Dialogs; type TMyThread = class(TThread) private { Private declarations } protected procedure Execute; override; procedure OLOLOProc; end; implementation { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { TThread } procedure TMyThread.Execute; begin { Place thread code here } end; end. Дельфи генерирует : Код:
unit Unit2; interface uses Classes, Unit1, Dialogs; type TMyThread = class(TThread) private { Private declarations } protected procedure Execute; override; procedure OLOLOProc; end; implementation { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { TThread } procedure TMyThread.Execute; begin end; procedure TMyThread.OLOLOProc; begin end; end. В процедуру Execute пишешь: Код:
unit Unit2; interface uses Classes, Unit1, Dialogs; type TMyThread = class(TThread) private { Private declarations } protected procedure Execute; override; procedure OLOLOProc; end; implementation { Important: Methods and properties of objects in visual components can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TThread.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { TThread } procedure TMyThread.Execute; begin Synchronize(OLOLOProc); end; procedure TMyThread.OLOLOProc; begin ShowMessage('OLOLO!'); end; end. Код:
uses ...., Unit2; ... var My : TMyThread; ... My := TMyThread.Create(false); Кнопка "+" - весы в правом верхнем углу сообщения... Последний раз редактировалось mak-karpov, 07.02.2010 в 22:18. |
#3
|
||||
|
||||
Цитата:
Кнопка "+" - весы в правом верхнем углу сообщения... |
#4
|
||||
|
||||
Сделал. Пишет следующее: Circular unit reference to 'unit1'
И подсвечивает красным: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; |
#5
|
||||
|
||||
Цитата:
Код:
uses ..., Unit1, ...; Код:
implementation uses Unit1; Кнопка "+" - весы в правом верхнем углу сообщения... |