Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.122
Poder: 35
dec Tiene un aura espectaculardec Tiene un aura espectacular
Tratamiento de errores entorno al API de Windows

Hola,

¿Qué tal va eso? Espero que bien.

Veréis. Tengo un problema. Resulta que cuando uno trabaja con componentes y ejecuta sus métodos y tal, bueno, el tratamiento de errores suele consistir en estar al tanto de las excepciones que puedan producirse.

Ahora bien, cuando uno trata con el API de Windows directamente, me parece que no pueden esperarse excepciones, sino "errores del sistema", que no pueden capturarse, por tanto, como si fueran excepciones.

Pondré un ejemplo. Si uno ejecuta la función "ShFileOperation" para borrar un archivo, por ejemplo, obtendrá un error del sistema si el archivo a borrar no existe. Pero no vale de nada (parece ser) hacer algo como:

Código Delphi [-]
try
  ShFileOperation();
except
  // Capturamos la excepción
end;

Porque, sencillamente, no es posible capturar ninguna excepción... pero el sistema sí advierte del error, y no sólo lo hace retornando un valor distinto de cero con la función susomentada, pero muestra un mensaje de error... que no queda muy curioso, porque además es de los típicos crípticos que muestra Windows...

Hombre. Se entiende que algo ha ido mal. Incluso llega a comprenderse por el mensaje de error (después de darle la vuelta a las palabras) que lo que ocurre es que no puede borrarse un archivo que no existe, pero, ¿hay alguna forma de evitar este mensaje error?

Obviamente no de evitarlo "como si no hubiera pasado nada", sino evitarlo en el sentido de hacérselo llegar al usuario por otros medios, en alguna variable, por ejemplo, no mediante un mensaje que uno no controla...

Así que me pregunto cómo pueden tratarse este tipo de errores, para los cuales no existen excepciones. Conozco funciones como "GetLastError", pero, no me queda muy claro su uso. De hecho siguiendo con el ejemplo, trato de "capturar" el error mediante esta función, pero, no lo consigo...

A ver si me podéis echar una mano monstruos, y bueno, a todo aquél que como yo está perdido en este asunto.

Gracias de antemano pataliebres. Buenos días, buenas tardes o buenas noches, dependiendo de donde estén vuecencias.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
 



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
Duda sobre entorno Delphi para Windows Vista geru_deusto Varios 9 12-01-2007 13:07:12
Tratamiento de Errores jsc Varios 2 15-09-2005 16:20:01
Siguen Errores de CORBA con Windows ME zuriel_zrf Providers 0 11-08-2004 08:35:34
conectar Firebird bajo entorno windows djavier22 Firebird e Interbase 2 05-07-2004 20:10:07
Tratamiento de la Voz muli Varios 0 03-11-2003 19:46:53


La franja horaria es GMT +2. Ahora son las 00:24:18.


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