Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2010
marioar marioar is offline
Miembro
 
Registrado: jul 2010
Posts: 11
Poder: 0
marioar Va por buen camino
manejo de excepciones en lazarus

Hola gente, estoy teniendo problema para controlar las excepciones, en particular lo que quiero hacer es controlar la existencia de un archivo dbf, el codigo es el siguiente:

Código Delphi [-]
try
  dbf2.FilePathFull:= DirecOrigen.Text;
  dbf2.TableLevel:=7;
  dbf2.TableName:= 'profesional.dbf';
  dbf2.Active:= true;
  except
  on e : exception do
  begin
     application.MessageBox('Verifique la ruta de origen', 'error', 0);
     exit;
  end;
end;

cuando busco en una ubicacion incorrecta me tira el cartel "reised exception class 'Exception' with message: Open: file not found: ...."

alguna idea de donde estoy pifiando???
gracias!!

Última edición por Casimiro Notevi fecha: 19-11-2010 a las 11:48:55.
Responder Con Cita
  #2  
Antiguo 19-11-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Supongo que la excepción debe estar saltando DENTRO del procedimiento que abre la base de datos y es tratada por el componente, mostrando el mensaje.

Otra posibilidad es que la excepción esté saltando antes o después de código que escribes.

¿Podrías decirnos en qué línea te da el error?

De todos modos, supongo que lo correcto sería ver si existen los ficheros con alguna función que trate ficheros y no esperar a que falle algún otro componente que dependa de ellos.

En este caso particular, creo que deberías utilizar la función FileExists
Responder Con Cita
  #3  
Antiguo 19-11-2010
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Está muy bien utilizar excepciones para controlar fallos que no se pueden preveer.
En este caso es un abuso de lla estructura try..except.
Sabiendo que vamos a abrir un fichero de una carpeta que el usuario selecciona, es muy probable y previsible que el fichero no esté en la carpeta.

El ejemplo más simple es pedir dos números y devolver la divisón entre ellos.
Con un simple IF se solucionan todos los errores posibles (división por 0)
En cambio, podemos hacer la división, dejar que falle y que se maneje la excepción. Esto consume muchos más recursos del ordenador, entorpece la lectura del código y rompe la fluidez que debería tener.

Código Delphi [-]
begin
   if (b=0) then 
      Mensaje ('No se puede dividir por 0');
   else
      Resultado := a/b;
end;

Código Delphi [-]
begin
   try
      Resultado := a/b;
   except
      on e:Exception do
         Mensaje('Ha ocurrido un erro: '+E.Message)
   end;
end;
Responder Con Cita
  #4  
Antiguo 02-12-2010
krlosrp krlosrp is offline
Miembro
 
Registrado: ago 2007
Posts: 18
Poder: 0
krlosrp Va por buen camino
Smile

Yo haría algo como:

Código Delphi [-]
if(FileExists(DirecOrigen.Text+'\profesional.dbf'))then 
begin
   dbf2.FilePathFull:= DirecOrigen.Text;   
   dbf2.TableLevel:=7;   
   dbf2.TableName:= 'profesional.dbf';   
   dbf2.Active:= true; 
end else 
  MessageBox('¡Vefique la ruta del archivo!');

Así evitas provocar errores sobretodo en lazarus porque a veces algunas cosas no funcionan como uno estaba acostumbrado en delphi, debe ser por que todavía está en versión beta.

Última edición por Casimiro Notevi fecha: 03-12-2010 a las 00:11:29. Razón: Poner etiquetas [delphi] el código fuente [/delphi]
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
Manejo de Excepciones Intraweb Capo Internet 4 11-08-2006 20:48:08
Manejo de Excepciones anghell77 OOP 7 10-08-2006 18:46:48
No me sale el manejo de excepciones Torreblanca Varios 3 11-07-2006 18:32:45
manejo de excepciones try y except no funciona gulder Conexión con bases de datos 4 10-11-2005 14:50:00
manejo de excepciones el_barto Varios 4 08-06-2005 09:48:36


La franja horaria es GMT +2. Ahora son las 13:59:07.


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