![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |