Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   conectar un programa delphi a una web (https://www.clubdelphi.com/foros/showthread.php?t=9173)

soyhugo 16-04-2004 01:39:06

conectar un programa delphi a una web
 
Esitmados señores, una vez más recurro a ustedes en busca de ayuda:
mi problema es el siguiente, yo quiero hacer un programa que cada x tiempo cargue en un string (pj un richedit), una determinada página web, y hasta que ésta no se haya cargada, no hace una serie de operaciones sobre el texto obtenido.

para ello utlilizo un reloj que llama a una funcion cada minuto, esta funcion tiene la siguiente instruccion para cargar la página.

richedit1.Lines.Strings[1]:=idhttp1.Get('http://pagina web') ;
...
instrucciones que hacen cosas sobre el código obtenido.

el problema está en que algunas veces tarda en cargarse dicha página en el richedit, con lo que las instrucciones siguientes, no funcionan correctamente, parece que no esperan a que se cargue la página. cómo puedo solucionar esto. además, la forma de controlar que si ha pasado x tiempo y no se ha cargado la página, no pete la conexión del socket, sino que vuelva a intentar cargarla. gracias.

jachguate 16-04-2004 03:29:32

a mi me parece que el método Get debiera funcionar de forma sincrona... es decir, devolver el control a la aplicación hasta que haya terminado de ejecutarse. Para capturar cualquier problema que se de con los sockets, podes encerrar la llamada a get en un bloque try/except/end y darle el tratamiento adecuado.

Hasta luego.

;)

soyhugo 16-04-2004 12:33:31

alguna idea más?
 
lo del socket ya lo sabía, el problema está en como hago para que vuelva a ejecutarse la carga de la página. y con respecto a lo de ejecutarse la llamada en forma síncrona, no me funciona, porque imagino que es como lo tengo programado ahora.

roman 16-04-2004 16:33:51

El compañero jachguate no te estaba sugiriendo que realzaras la llamada en forma sincrónica sino que te estaba afirmando un hecho: las componentes Indy trabajan sincrónicamente y esto se supone que quiere decir que la llamada a Get no regresa sino hasta que termina de cargarse completamente la página razón por la cual es extraño que se ejecuten otro procedimientos antes de terminarse la carga.

// Saludos

jachguate 16-04-2004 17:33:57

para que vuelva a ejecutarse la cárga de la página... podes hacer algo como:

Código:

var
  Error : Boolean;

Begin
  repeat
    Error := False;
    try
      richedit1.Lines.Strings[1]:=idhttp1.Get('http://pagina web') ;
    except
      on Exception do
      Begin
        Error := True;
        Tratar_Informar_o_ignorar_Error;
      end;
    end;
  until not Error;
  otrasOperaciones;
End;

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 05:55:05.

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