Fórum status da posição de umvetor #273228
19/03/2005
0
Como posso verificar se em uma determinada posição de um vetor há memória alocada? Preciso dar um resume nas posições de um vetor de Threads que estiverem com threads alocadas. Tá dando erro de exception, acho que porque tá passando por posições no vetor em que não há threads.
Obrigado! :roll:
Domingosafn
Curtir tópico
+ 0Posts
21/03/2005
Kapak
Gostei + 0
21/03/2005
Nildo
if Assigned( Vetor[ Posicao ] ) then Vetor[ Posicao ] := TSuaThread.Create( blablabla );
Gostei + 0
21/03/2005
Kapak
Então pode ser que ela já tenha terminado e qdo for dado o Resume, dará erro.
Gostei + 0
21/03/2005
Nildo
Nesse caso, ele deve setar a propriedade FreeOnTerminate da mesma para True, e antes de dar o resume, verificar se ela está ´Assigned´ e ´<> nil´.
Dai funciona
Gostei + 0
21/03/2005
Massuda
O que precisa fazer é o que o kapak disse no início do tópico... no evento OnTerminate (ou no destrutor da thread), a própria thread deveria se remover (nil´zar) do vetor.
Gostei + 0
21/03/2005
Nildo
tem razão!
Gostei + 0
21/03/2005
Kapak
E para desativá-la no vetor é bom utilizar uma Critical Section p/ fazer isso em modo safe.
Gostei + 0
24/03/2005
Beppe
Se for apenas isto, então basta
if Assigned(Vetor[Posicao]) then Vetor[Posicao].Resume;
Gostei + 0
24/03/2005
Kapak
Gostei + 0
24/03/2005
Beppe
De repente ele tá de discada e não pode acessar durante a semana. Ou teve um contratempo, que nem eu tive da sexta até hoje. Ou é um mal-agradecido mesmo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)