thalesoli 0 Denunciar post Postado Junho 11, 2007 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
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Interessante, no caso ele não trava por causa do ProcessMessages, valeu thalesoli, muito interessante... Compartilhar este post Link para o post Compartilhar em outros sites
DouglasP 1 Denunciar post Postado Fevereiro 26, 2009 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
thalesoli 0 Denunciar post Postado Fevereiro 26, 2009 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
DouglasP 1 Denunciar post Postado Fevereiro 26, 2009 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
thalesoli 0 Denunciar post Postado Fevereiro 27, 2009 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
DouglasP 1 Denunciar post Postado Fevereiro 27, 2009 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
thalesoli 0 Denunciar post Postado Fevereiro 27, 2009 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
DouglasP 1 Denunciar post Postado Fevereiro 28, 2009 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
thalesoli 0 Denunciar post Postado Fevereiro 28, 2009 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