Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
como puedo comprobar si un fichero online existe

uso este procedimiento para descargar el fichero de una web:

Código Delphi [-]
procedure TForm1.descargarURL ( const direccionURL, ficheroLocal : string);
begin
  if direccionURL <> '' then
  begin
    with TDownloadURL.Create(self) do
    try
      URL := direccionURL;
      FileName := ficheroLocal;
      ExecuteTarget(nil);
    finally
      Free;
    end;
  end;
end;

para usarlo hago esto y todo ok
Código Delphi [-]
descargarurl('http://www.web.com/fichero.txt', 'fichero.txt');

Como es normal, si el servidor esta offline me salta un mensaje "Error downloading URL: http://www.web.com/fichero.txt", en vez de eso preferiria que no me saliese ningún mensaje emergente o si sale al menos poder cambiar el mensaje que sale por otro. ¿como hago eso?

Última edición por cocute fecha: 05-02-2010 a las 12:07:38.
Responder Con Cita
  #2  
Antiguo 05-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
he probado con esto:
Código Delphi [-]
procedure TForm1.descargarURL ( const direccionURL, ficheroLocal : string);
begin
  if direccionURL <> '' then
  begin
    with TDownloadURL.Create(self) do
    try
      URL := direccionURL;
      FileName := ficheroLocal;
      OnDownloadProgress := URL_OnDownloadProgress;
     ExecuteTarget(nil);
     except
     ShowMessage('El servidor esta offline');
      Free;
    end;
  end;
end;

pero cuando el servidor está offline me salen dos mensajes emergentes:
1º el que he puesto yo: "El servidor esta offline"
cuando cierro el 1º me sale este:
2º el "The specified file was not found"

como quito el 2º?
se que la excepción es ERROR_FILE_NOT_FOUND pero no estoy familiarizado con el uso de excepciones, poco a poco lo voy pillando viendo ejemplos

Última edición por cocute fecha: 05-02-2010 a las 12:38:31.
Responder Con Cita
  #3  
Antiguo 05-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
he probado esto que creia que era lo correcto pero no funciona, no me detecta la excepcion me salta el mensaje que me salia a la primera de "Error downloading URL: http://www.web.com/fichero.txt" en vez del que pongo

Código Delphi [-]
procedure TForm1.descargarURL ( const direccionURL, ficheroLocal : string);
begin
  if direccionURL <> '' then
  begin
    with TDownloadURL.Create(self) do
    try
      URL := direccionURL;
      FileName := ficheroLocal;
      OnDownloadProgress := URL_OnDownloadProgress;
      ExecuteTarget(nil);
    except
    on e : EFileNotFoundException do
     begin
      ShowMessage('El servidor esta offline');
      Free;
     end;
    end;
  end;
end;

Última edición por cocute fecha: 05-02-2010 a las 12:56:25.
Responder Con Cita
  #4  
Antiguo 05-02-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hay dos puntos a notar.

Primero, except y finally son independientes uno de otro por lo que no puedes omitir uno de los dos si son necesarios ambos. Lo que tienes que hacer es anidar los bloques:

Código Delphi [-]
with TDownloadUrl.Create(nil) do
  try
    URL := 'http://ianua.cele.unam.mx/roman/dummy.txt';
    Filename := 'C:\Users\roman\Documents\dummy.txt';

    try
      ExecuteTarget(nil);
    except
      ShowMessage('No se puede descargar el archivo');
    end;
  finally
    Free;
  end;

Tal como lo tenías, el componente se destruirá sólo cuando haya una excepción.

Por otra parte, cuando ejecutas una aplicación desde el IDE y tienes activada la opción Stop on Delphi Exceptions:



la ejecución se detiene dos veces, en la excepción original y en la que pones tú. Puedes desactivar dicha opción pero, en todo caso, cuando ejecutes desde fuera del IDE, sólo se detendrá en tu excepción.

// Saludos
Responder Con Cita
  #5  
Antiguo 05-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Muchas gracias por responder pero haciendo lo que me dices
me siguen saliendo los dos mensajes no solo el mio.
1º "No se puede descargar el archivo"
y cuando lo cierro
2º "The specified file was not found"

uso delphi 2010
la opcion equivalente a "Stop on delphi exceptions" que encuentro en Delphi2010 es esta
"Notify on Language exceptions"
pero la desmarco y cambio el codigo por el que me has puesto pero nada, me salen los dos mensajes

Última edición por cocute fecha: 05-02-2010 a las 22:06:00.
Responder Con Cita
  #6  
Antiguo 06-02-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Solucionado, funcionaba bien la forma que me habias puesto .

el problema era mio, ya que el 2º mensaje me venia de otro lado no de este procedimiento.

muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comprobar si existe archivo Ken_Masters API de Windows 2 29-07-2007 17:14:19
Comprobar si un objeto existe kikecg HTML, Javascript y otros 3 21-07-2006 09:20:37
Como puedo comprobar que una Ttable ya está abierto pjmedina Varios 2 14-06-2006 12:32:34
Como leer de un fichero txt y comprobar ??? chelejuan Varios 2 19-04-2005 18:43:47
Cómo puedo comprobar la existencia de un archivo al cargar mi programa? darkone2k3 Varios 9 30-01-2004 02:44:24


La franja horaria es GMT +2. Ahora son las 23:37:23.


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
Copyright 1996-2007 Club Delphi