![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заменяя ProcessMessages [D7, XP]
AV © (2012-02-29 11:43:00)function TForm1.WaitForTrue(nDelay: integer; P: PBoolean): boolean;
var
Msg: TMsg;
n: Integer;
begin
n := 0;
repeat
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Sleep(50);
n := n + 1;
until (n > nDelay) or P^;
Result := (n <= nDelay);
end;
для чего..
Собственно, что б потоков лишних не плодить
например,
TcpClient.Open
if WaitForTrue(50, addr(TcpClient.Connected)) then
соединились вовремя иначе
вовремя не соединились
Огребу?
Сергей М. (2012-02-29 23:39:00) [1]
> Просто еще WM_Quit не анализируется и прочее
А надо бы, иначе огребешь.
Забаненный (2012-02-29 21:53:00) [2]странное не значит - плохое ;)
Cobalt (2012-02-29 16:20:00) [3]Автор - однозначно любитель странного :-)
CRLF (2012-02-29 14:28:00) [4]
> не суть.
Может и не суть, но в "Начинающих" лучше предупредить. :-)
А вариант с WaitForSingleObject не катит?
AV (2012-02-29 14:05:00) [5]
> А чем тебе не нравится ProcessMessages?
Основное..
На мессаджи у меня обычно есть чего наподвязано.
и OnMessage иногда надо обойти
AV (2012-02-29 14:03:00) [6]>> Anatoly Podgoretsky © (29.02.12 13:23) [2]
ну, да оттуда идею и сдернул.
Просто еще WM_Quit не анализируется и прочее, прочее
И еще, удобно нахожу это :)
> CRLF (29.02.12 13:43) [3]
> Есть мнение, что на addr(TcpClient.Connected) тебя будет
> ждать грандиозный облом.
не суть.
Можно еще переменную завести, на onStatus повесить, например. И по ней ориентироваться.
основное - удобно. Не?
одной сторокой - ЖдатьМаксимумСтолькоДоСобытия
(не обязательно, до True, можно еще чем заменить..)
CRLF (2012-02-29 13:43:00) [7]Есть мнение, что на addr(TcpClient.Connected) тебя будет ждать грандиозный облом.
Anatoly Podgoretsky (2012-02-29 13:23:00) [8]ProcessMessages и равен if PeekMessage(...
Cobalt (2012-02-29 13:09:00) [9]А чем тебе не нравится ProcessMessages?