Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с потоками


Лёха ©   (2009-06-13 17:02:00) 

Добрый день!
Скачал пример работы с потоками, а он с использованием MCK, мне нужно в чистом KOL.

вот кусок:

var
 formThread: PThread;

function ThreadExecute(Sender: PThread): Integer;
begin
 // тут выполняем какие-либо действия
end;

begin
 form := NewForm(Applet, 'Окно');
 Run(form);
 formThread := NewThread;
 formThread.OnExecute := ThreadExecute;
end;


получаю такое:
[Error] Project99.dpr(39): Incompatible types: 'method pointer and regular procedure'

через MakeMethod тоже не работает:
[Error] Project99.dpr(39): Incompatible types: 'TOnThreadExecute' and 'TMethod'

помогите плиз, как этот метод присвоить?

Заранее спасиб!!!


abyss_by   (2009-06-13 22:58:00) [1]

var
MyThread: PThread;

procedure TForm1.FormThreadShow;
begin
 if Assigned(ToolTipThread) then
  MyThread.Terminate;
  MyThread := NewThreadAutofree(ShowThread);//ShowThread будет ниже
  MyThread.PriorityClass := THREAD_PRIORITY_IDLE;// тут на усмотрение конечно
  MyThread.Threadpriority := THREAD_PRIORITY_LOWEST;
end;

function TForm1.ShowThread(Sender: pThread): integer;
begin
//tratata
end;


Galkov   (2009-06-13 20:40:00) [2]

1) Да не вопрос, можно и так
2) Есть такой термин - чит. Это то, чем не следует пользоваться без крайней необходимости :)


Лёха   (2009-06-13 17:35:00) [3]

спасибо! но я сделал чуть по-другому:
formThread.OnExecute := TOnThreadExecute(MakeMethod(nil, @ThreadExecute));


Galkov   (2009-06-13 17:22:00) [4]

Program ThreadTest;
uses  windows,kol;

type Tsdk=object
 Thread: PThread;
 function ThreadExecute(Sender: PThread): Integer;
end;

var SDK:Tsdk;

function Tsdk.ThreadExecute(Sender: PThread): Integer;
begin
 // тут выполняем какие-либо действия
 Result := 0;
end;

begin
 Applet := NewForm(Applet, 'Окно');
 SDK.Thread := NewThread;
 SDK.Thread.OnExecute := SDK.ThreadExecute;
 Run(Applet);
end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо