Ver Mensaje Individual
  #2  
Antiguo 13-07-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Quédate con la idea: creas un objeto cuando lo vayas a usar, y, lo destruyes cuando ya no lo vayas a necesitar. "Try" y "Finally" sirve para garantizar, que, aun en el caso de error, "Finally" sería ejecutado, y, por lo tanto, nuestro objeto destruido. Pero, tú puedes usar tantas veces como quieras el objeto en cuestión, en este caso, realizar varias peticiones HTTP, liberando o destruyendo el objeto al final, cuando ya no lo necesites.

Otra opción sería declarar alguna variable donde guardar la instancia del objeto, o sea, fuera del procedimiento local "Button1Click", usar aquí dicha variable, y, liberarla cuando nuestro programa terminase, por ejemplo, en todo caso cuando el objeto ya no nos fuera necesario. Pero dicho mal y pronto algo como esto, que, parece ser lo que ahora te preocupa:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  IdHTTP: TIdHTTP;
begin
  IdHTTP := TIdHTTP.Create;
  try
    try
      IdHTTP.Get('http://www.clubdelphi.com');

      IdHTTP.Get('http://www.clubdelphi.com');

      IdHTTP.Get('http://www.clubdelphi.com');

      IdHTTP.Get('http://www.clubdelphi.com');
    except
    end;
  finally
    IdHTTP.Free;
  end;
end;

... es perfectamente válido. No necesitas liberar el objeto a cada petición HTTP, sino que puedes reutilizarlo si quieres, y, liberarlo sólo al final, cuando ya no es necesario. Por lo demás no es bien dejar el "except" vacío, puesto que si ocurriese un error, simplemente, se ocultaría, lo que nos nos serviría de mucho a lo hora de solucionarlo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita