FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Que problema con las INDY!!!!!
Que tal.... me imagino que el problema que tengo lo han tenido algunos de ustedes, es por eso que creo que me puedan aportar una solucion... Estoy usando los componentes TCP de las Indy, cuando desde un cliente envio una respuesta al servidor este debe mostrar un form, el codigo lo pongo en el Execute del TCPServer pero desastrosamente el form aparece a medias, y no solo eso, si envio un stream que deba ser interpretado en otro form sucede lo mismo... y ya llevo 14 con este problema y nada, si de casualidad alguno tiene la solucion por favor... o si saben donde encontrarla igual...
Salu2
__________________
Diego. Colombia es pasión. |
#2
|
||||
|
||||
No entiendo que significa eso de "el form aparece a medias?", pero parece un problema gráfico, no de las Indy. Porque no explicas bien cual es tu problema, y quizas algun trozo de código.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
muy bien...
procedure TForm1.idTCPSocketServer(//parametros); var algo: string; begin algo:= AThread.Connection.ReadLn; // aqui leo la respuesta // del cliente. if algo = 'mostrar' then begin form1.hide; form2.show; // aqui es donde no funciona.... se congela // el form2, solo aparece el cuadrillo donde // deberia estar. end; end; pero si pongo el mismo codigo en un timer funciona... procedure TForm1.idTCPSocketServer(//parametros); var algo: string; begin algo:= AThread.Connection.ReadLn; // aqui leo la respuesta // del cliente. if algo = 'mostrar' then begin timer1.enabled:= true; end; end; cuando se ejecuta el evento onTimer que tiene Form2.Show; funciona perfectamente. Es decir que mientras este dentro del envento Execute del Server no puedo hacer nada con otros Forms.
__________________
Diego. Colombia es pasión. |
#4
|
|||
|
|||
supongo que por lo que indicas, mientras está "trabajando" en la connexion, el form parace que se quede colgado (pasa siempre), para ello puedes colocar el componente TidAntefreezee (Indy Misc), con lo que supongo que solucionarás el problema.
|
#5
|
||||
|
||||
Lo que ocurre es que estas invocando el método Show desde el hilo de ejecución de la conexión (Indy es un Servidor Multi-Hilos, y debieras hacerlo desde el hilo principal de la aplicación). Por ello es que, al terminar o suspenderse la ejecución del hilo, la forma queda congelada.
Para ello, podes valerte del método Synchronize del hilo. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
||||
|
||||
Esta bien gracias por sus comentarios voy a probar lo que me dices, lo del AntiFreeze ya lo probe pero no funcionó...
Salu2
__________________
Diego. Colombia es pasión. |
#7
|
|||
|
|||
No me fijé que era dentro de un thread, para ello, como dice jachguate, dentro del thread utiliza el sychronize para cualquier acceso a componentes que no incluyas en el thread
|
|
|
|