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

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

Заменяя 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?


Наверх

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