Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Que problema con las INDY!!!!! (https://www.clubdelphi.com/foros/showthread.php?t=5208)

diegofhernando 12-11-2003 22:45:10

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:cool:

jachguate 12-11-2003 22:50:55

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.

;)

diegofhernando 12-11-2003 23:45:45

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.

Julià T. 13-11-2003 01:22:06

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.

jachguate 13-11-2003 02:18:12

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.

;)

diegofhernando 13-11-2003 17:42:59

Esta bien gracias por sus comentarios voy a probar lo que me dices, lo del AntiFreeze ya lo probe pero no funcionó...

Salu2:cool:

Julià T. 13-11-2003 20:13:37

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


La franja horaria es GMT +2. Ahora son las 06:01:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi