-
Лёха (13.06.09 17:02) [0]Добрый день!
Скачал пример работы с потоками, а он с использованием 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'
помогите плиз, как этот метод присвоить?
Заранее спасиб!!! -
Galkov (13.06.09 17:22) [1]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. -
Лёха (13.06.09 17:35) [2]спасибо! но я сделал чуть по-другому:
formThread.OnExecute := TOnThreadExecute(MakeMethod(nil, @ThreadExecute)); -
Galkov (13.06.09 20:40) [3]1) Да не вопрос, можно и так
2) Есть такой термин - чит. Это то, чем не следует пользоваться без крайней необходимости :) -
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;