Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thalesoli

Função de Delay

Recommended Posts

Pessoal uma procedure para gerar um intervalo, mas sem travar o sistema!

 

procedure Delay(dwMilliseconds: Longint);var  iStart, iStop: DWORD;begin  iStart := GetTickCount;  repeat	iStop := GetTickCount;	Application.ProcessMessages;	Sleep(1);  until (iStop - iStart) >= dwMilliseconds;end;

falow

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso tenho meu programa que ele compara 2 listbox a cada x segundos (isso no timer)

como uso essa função postada?

ja que o timer causa uns travamentos no sistema apos umas horas.

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi muito bem a sua pergunta...

 

o q você quer fazer, o timer já não está fazendo? ou seja executar um processo após x segundos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim está, porem como citei, eu clico no botão ai ele começa a compara os processos atuais a cada x segundos, esse a cada x segundos ele limpa o listbox dos processos atuais, lista denovo e compara novamente.

 

ai abre-se o jogo, e fica rodano o sistema e o jogo, porem

o timer causa um certo lag no jogo.

por isso vi essa função ai e gostaria de usar ela para ver se resolve meu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função so funcionaria da maneira que você quer se você colocasse num thread.

tipo:

 

procedure myThread.execute;

begin

repeat

delay(100);

//codigo

until terminated;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai no caso como faço para ele executar esse código a cada x segundos, caso retorne um valor 1 ele para,

caso retorne um valor 0 continua rodano (pesquisan)?

 

em sí e a msm coisa que o timer, porem o timer causa lag apos um certo tempo no sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade o código q eu postei faria isso ... você nao viu q tem uma estrutura de repeticao que fica executando ate que seja terminado o thread?

 

so aconselho você manter uma referencia a esse thread para quando você for finalizar o programa, terminar ele..

 

se precisar de ajuda sobre threads post no forum

 

falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando esse codigo que você postou:

 

procedure myThread.execute;

begin

repeat

delay(100);

//codigo

until terminated;

end;

 

se eu quiser que ela pare como faço?

sem fechar o programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estude threads como eu ja havia dito

 

se você nao souber usar uma thread não saberá o q ocorre ai...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.