Ayuda con componente indy: delphi

Estoy haciendo un programa que se conecta con idtelent y que envía comando, el resultado de los mismo debo leerlos para ver si me devolvió "RESULT 0" para decidir que voy a hacer y cuando corro el programa, se queda detenido en:
msge := IT_Conect.ReadLn;
NOTA: msge es un string.
Codigo del programa:
IT_conect.WriteLn('connect_to_mobile MSID '+ tel+ ' SPC '+ cod_tel);
msge := IT_Conect.ReadLn;
if copy(msge,1,8) = 'RESULT 0' then
begin
...
end
else
showmessage('No fue posible, trate mas tarde');
Respuesta que da el sistema al que me estoy conectando:
RESULT 0 MIN 8094815776 ESN 1FAB55F5 MOB_FIRM_REV 04B8 MOB_MODEL 6C
DATA_P_REV 2 A_KEY_P_REV 2 SSPR_P_REV 1 SPL_P_REV 1 OTAPA_P_REV 1
PUZL_P_REV 0 3GPD 0 SECURE_MODE_P_REV 0 NUM_MAN_SPEC 1 MAN_SPEC_FID
196 MAN_SPEC_PREV 1 BAND_MODE_CAP 11100000 OP_MODE_INFO 00000000
BAND_CLASS_INFO 0000000000000000 LOCK_STATE 0

1 Respuesta

Respuesta
1
En los programas que hago con componentes inet, sea indy, dWinsock, o cualquier otra librería, siempre intento trabajar a través de eventos, esto es, las conexiones sean a internet o a un numero de teléfono, suelen ser asíncronas, no es como concatenar una cadena, no son instantáneas, ¿qué hago?, espero al evento on_connect, cuando verifico que la conexión esta hecha, envío los comandos, y en el evento onread, online o el que sea coloco la rutina de lectura.
Realmente por lo que indicas el programa debería funcionar, porque si como parece, al depurar puedes acceder a los datos de abajo puedes estar seguro de: 1º conecta, 2º el comando se envía, 3º la maquina, teléfono o lo que sea responde, ahora bien, ¿por qué se interrumpe el programa?, quizás el readln espera un carácter de final de linea que no llega, es decir la cadena de datos no termina en chr(13)+chr(10) (intro + retorno de linea), así pues el evento, o proceso no estoy seguro, readln no se da nunca, intenta ver si tienes otro método para acceder a los datos de salida, normalmente para texto hay la opción de usar los pchar y esas cosas, parece una tontería pero yo estuve varias horas pillado con un cliente de correo y ese era el problema, los comandos que enviaba al server no tenían el retorno de linea y la conexión se cortaba por inactividad.
Espero haber sido de ayuda =P

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas