![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоки [Delphi, Windows]
Robt © (2007-09-13 21:28:00)Чо делать с synchronize(???) процедуру без параметров не принимает
требует метод потока
Это как панимать ?
KOLBoss (2007-12-04 18:10:00) [1]
> http://dmiko.mail333.com/other/Ping.dpr
Большое спасибо. Хороший стил програмирования Я даже сначало неповерил что этот код может работать
У меня 28 672 байт получилось.
Дмитрий К (2007-12-04 14:16:00) [2]
> мож тогда кто небудь сможет перевести на кол.
http://dmiko.mail333.com/other/Ping.dpr
Vladimir Kladov (2007-12-04 11:11:00) [3]В KOL всё - динамически. Открывайте unit1_1.inc, и там процедура, в которой написано, как оно делается "статически". Пишите так же по свистку - будет динамически.
KOLBoss (2007-12-04 08:31:00) [4]
> TMyThread = object( TThtead )
опечатка TThread надо
> http://www.kolnmck.ru/files/demo/demothread.7z
пример я смотрел но там не динамически
мож тогда кто небудь сможет перевести на кол.
http://uialexey.narod.ru/pingthread.rar
Vladimir Kladov (2007-12-04 06:23:00) [5]TThtead?
Вообще, всё написано в книге, в комментариях. Демо есь.
KOLBoss (2007-12-03 20:36:00) [6]Подскажите пажалуйста как создать динамически потоки.
uses Windows, Messages, KOL;
type
TMyThread = object( TThtead )
пробывал так но Delphi говорит (Undeclared identifier: 'TThtead')
max727 (2007-10-04 18:48:00) [7]
> ANTPro © (04.10.07 14:05) [12]
> http://www.kolnmck.ru/files/demo/demothread.7z?
А если мне нужно использовать Synchronize, то как?
этого в примере нет
ANTPro (2007-10-04 14:05:00) [8]> [11] max727 (04.10.07 13:08)
http://www.kolnmck.ru/files/demo/demothread.7z?
max727 (2007-10-04 13:08:00) [9]Помогите разобраться
чем использование потоков KOL отличается от стандартных дельфовых потоков?
это вырезка из help-а
unit Unit2;
interface
uses
Classes;
type
TMyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
{ TMyThread }
procedure TMyThread.Execute;
begin
{ Place thread code here }
end;
end.
не мог бы кто-нибудь привести аналогичный пример для KOL?
Vladimir Kladov (2007-09-16 20:03:00) [10]Наконец-то разрулил свои внеколовские дела. Завтра буду все читать и готовить обновление.
Robt (2007-09-14 19:46:00) [11]ага спектр (звук), и ком порт на подходе (дист управление)
то есть я понял что передаеца метод чтоб знать кому посылать
сендмессажу для синхронизации , но это уже не важно ...
vampir_infernal (2007-09-14 16:27:00) [12]Рискну предположить, что программа товарища Robt читает откуда-то какие-то данные в потоке и хочет выводить их на форму в виде графиков, таблиц, etc (например, данные с com-порта).
Galkov (2007-09-14 14:18:00) [13]
> я про то и говорю
Вообще-то, что такое это "то" - непонятно совершенно.
Как и непонятно, остались проблемы с пониманием, или нет
И к чему тогда относилось "зачем", если "про то и говорилось"
И чего вообще было было непонятно с самого начала - тоже не очень понятно стало как-то...
robt (2007-09-14 13:09:00) [14]
> затем, что при этом (при synchronize) гарантировано отсутствие
> конфликтов этого вашего "метода формы" с другими событиями
> интерфейса.
я про то и говорю synchronize(form1.draw);
Galkov (2007-09-14 12:45:00) [15]
> и зачем если он хавает метод формы ?
затем, что при этом (при synchronize) гарантировано отсутствие конфликтов этого вашего "метода формы" с другими событиями интерфейса.
Грубо говоря, работать с визуальными элементами из другого потока можно ТОЛЬКО через synchronize.
А за работу (с контролами созданными в основном потоке) через Execute - надо руки отрывать сразу, не дожидаясь пока все громко крякнет.
> Имелся в виду вообще "метод".
Вопросов больше не имею :))
vampir_infernal (2007-09-14 11:53:00) [16]
> Причем тут "этого же потока" :shock:
Я не совсем правильно выразил мысль. Имелся в виду вообще "метод". Передавать в synchronize метод объекта, отличного от того, в котором поток был создан, я не пробовал, поэтому ничего не могу утверждать о корректности такой конструкции.
> а что в кол можно переопределять паток ?
TThread из KOL.pas - это обычный объект. Что Вам мешает унаследовать от него потомка?
> и зачем если он хавает метод формы ?
"Метод формы" он не хавает
> и зачем метод когда в API просто DWORD WINAPI ThreadProc(LPVOID
> lpParameter);
ThreadProc - это основная функция потока, указатель на которую передается в CreateThread. Она и не должна быть методом. Из нее в последствии (как правило) вызывается Thread.Execute, из которого Вы можете вызвать Synchonize.
robt (2007-09-14 09:25:00) [17]а что в кол можно переопределять паток ?
и зачем если он хавает метод формы ?
и зачем метод когда в API просто DWORD WINAPI ThreadProc(LPVOID lpParameter);
Galkov (2007-09-14 06:57:00) [18]Причем тут "этого же потока" :shock:
vampir_infernal (2007-09-14 06:36:00) [19]Как написано, так и понимать. В качестве параметра в Synchronize передается имя какого-либо метода этого же потока. Например:
type
TMyThread = object( TThtead )
private
procedure MyProc;
//--описание
implementation
function TMyThread.Execute : integer;
begin
//--код
Synchronize( MyProc );
//--код
end;
procedure TMyThread.MyProc;
begin
//какой-то код,Кторый выполнится синхронно с основным потоком.
end;