Array
(
)

Problemas com o count

Redoctober
   - 21 set 2004

Bom dia pessoal.

Meu problema é muito maluco... Vejam:

tem um form com dois Memos e um Button


o nome deles são MemoUser e MemoMail.

Nos dois tem exatamente 3 linhas e o mesmo texto nos dois;


grep -w diney /etc/passwd
diney:x:1172:1172::/home/diney:/bin/bash
[root@mail /root]#


E preciso sempre de pegar o resulta da segunda linha dos dois Memos, então utilizei o código abaixo:

#Código


showmessage(frmPrincipal.MemoUser.Lines[frmPrincipal.MemoUser.Lines.Count-2]);
showmessage(frmPrincipal.MemoMail.Lines[frmPrincipal.MemoMail.Lines.Count-2]);


Teria que abrir duas caixas de mensagem subsequente na primeira exibindo o resulta da segunda linha do MemoUser e na outra caixa o mesmo resulta, só que do MemoMail.


O problema é que a primeira caixa aparece vazia e a segunda caixa que abre aparece o resultado certinho!

O que será?



Abraços


Drmoon
   - 21 set 2004

envie um pedaço maior do codigo para ver melhor...


Redoctober
   - 21 set 2004


Citação:
envie um pedaço maior do codigo para ver melhor...


Pra eu te mandar é meio complicado... Vou tentar te explicar.

Fiz um sistema pra fazer conexões remotas em 2 servidores Linux., via telnet. Bom, usando o IdTelnet do Indy eu consegui fazer as conexões, como eu tenho que fazer duas conexões ao mesmo tempo tive que duplicar todos os componentes...

Tipo, um Idtelnet, um Memo que recebe os dados do telnet, uma caixa de texto que envia os comandos e um botão Ok.

Aqui que entra o que eu preciso!

É que depois de conectado nos dois servidores linux, o programinha deve verificar se existe o usuário informado, e a forma foi enviar para os dois servidores os seguintes comandos:

#Código


frmPrincipal.ComandoUser.Text := ´grep -w ´+Edit1.Text+´ /etc/passwd´;
frmPrincipal.ComandoMail.Text := ´grep -w ´+Edit1.Text+´ /etc/passwd´;


ComandoUser.Text e ComandoMail.Text são duas caixas de texto que envia o comando via telnet que é respondido no MemoUser e no MemoMail.

Então, a resposta desses comandos vai para os dois mesmos que fica assim:

[ MemoUser ]
#Código

grep -w diney /etc/passwd
diney:x:1172:1172::/home/diney:/bin/bash
[root@user /root]


[ MemoMail ]
#Código

grep -w diney /etc/passwd
diney:x:1172:1172::/home/diney:/bin/bash
[root@mail /root]


A partir de agora, preciso imprimir a segunda linha dos dois memos

Entendeu?


Drmoon
   - 21 set 2004

como não sei do código vou tentar algumas coisas que derrepente te apontam para o caminho correto.

eu fiz um teste aqui e funcionou direitinho.
só que vc está pegando estes valores pelo telnet e preenchendo o memo.
fica difícil avaliar deste jeito mas verifique estas coisas:

vc duplicou os componentes, ok, então vc teria duas origens para o dado solicitado, correto?

#Código



frmPrincipal.ComandoUser.Text := ´grep -w ´+Edit1.Text+´ /etc/passwd´;
frmPrincipal.ComandoMail.Text := ´grep -w ´+Edit1.Text+´ /etc/passwd´;
/\
||



veja também se a variável utilizada para gerar a mensagem está pegando o valor correto (use step over ou F8 e pare o mouse sobre a atribuição da variável e veja o valor que aparece);

se a variável estiver correta, verifique se algum outro comando estaria limpando o conteúdo da mesma;

veja se os dados que estão sendo gravados no memo estão como linhas e não com espaços;

espero que ajude.

Douglas


Marcelo Saviski
   - 21 set 2004

Pode ser que vc esqueça de limpar os memos antes adicionar os valores e eles tenham algumas linhas em branco, tente antes de adicionar os valores no memo, tente isso:
#Código

MemoUser.Clear;
MemoMail.Clear;

talvez de certo