Aguardar Evento acontecer

Delphi

13/03/2009

Olá,

Eu tenho aqui um componente e ele tem seus eventos.
Só que preciso criar uma função que ao chamar ela, aguarda a execução do evento.

Um exemplo é o readln do idTCPClient

Se coloco
Str:= idTCPClient.Socket.Readln();
ShowMessage(Str);

Ele vai aguardar até que chegue os dados.

É isso que estou querendo fazer criar uma função
Str:= LerDados();
ShowMessage(Str);

Esse LerDados vai aguardar até que o evento aconteça e depois volte para o ciclo normal.

Como posso fazer isso?


Rudá

Rudá

Curtidas 0

Respostas

Rudá

Rudá

13/03/2009

Esqueci de falar que aguardar até no máximo um determinado tempo (Timeout)

LerDados(10000) aguardar até no máximo 10 seg;


GOSTEI 0
Woinch

Woinch

13/03/2009

Na verdade aquele ShowMessage só irá acontecer depois de executado o LerDados().
Mas entendi o que você quer fazer. Você pode utilizar o comando Application.ProcessMessages para ficar aguardando o tempo que for necessário, exemplo:

function LerDados(MSeg: Cardinal);
var
  Inicio: Cardinal;

begin
  Inicio := GetTickCount;
  ContinuarProcessando := True;

  repeat
    Application.ProcessMessages;
  until ((GetTickCount -Inicio) >= MSeg) or (ContinuarProcessando);
end;


Onde a variável ContinuarProcessando deverá ser uma variável privada ou pública que será mudada para False quando o processo deverá ser parado e a variável MSeg indicará em quantos Milesegundos o processo irá parar se a variável ContinuarProcessando não sofrer alterações.

Nunca fiz nada desse tipo antes, inclusive esse comando foi adaptado na hora por mim (não testei). Mas espero que te ajude em algo.
Favor mande um feedback.


GOSTEI 0
Rudá

Rudá

13/03/2009

Perfeito amigo.

Funcionou como eu queria.

Obrigado.


GOSTEI 0
POSTAR