Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Bibliotecas de código fuente > [GH Freebrary]
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #16  
Antiguo 21-10-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
ghLastErrorMsg y ghRaiseLastError

Quienes han usado directamente la API de Windows tendrán muy presente que esta no suele elevar excepciones al ocurrir una situación de error. En lugar de eso, la API de Windows establece un código de error numérico que podemos recuperar con la función GetLastError. A veces es necesario convertir este código de error a algo que sea relativamente comprensible para el usuario de la aplicación (aunque más útil para el programador que recibirá el reporte del usuario), y para ello Delphi cuenta con la función SysErrorMessage, la cual envuelve a la función FormatMessage del sistema operativo.

También es común que, una vez obtenido el texto del error, queramos elevar una excepción Delphi con él. Así ocurre por ejemplo en este caso:
Código Delphi [-]
else
  raise Exception.Create(SysErrorMessage(GetLastError));
Con GHF, para obtener el texto del error, podemos usar la función ghLastErrorMsg:
Código Delphi [-]
else
  raise Exception.Create (ghLastErrorMsg);
Pero podemos simplificar un poco más toda la sentencia usando la función ghRaiseLastError:
Código Delphi [-]
else
  ghRaiseLastError;
Internamente, esta función llama a ghLastErrorMsg y eleva una excepción con el texto del error. Además, ghRaiseLastError admite un parámetro opcional de tipo String para indicar el formato a dar al mensaje de error. Si no se especifica el formato, se utiliza el predeterminado '%s (GetLastError %d).', viéndose el mensaje de excepción como en este ejemplo:



El formato se aplica con la función estándar Format que todos conocemos. "%s" indica en qué parte del mensaje de excepción debe ghRaiseLastError poner el texto del error devuelto por ghLastErrorMsg. "%d" significa que en esa posición debe aparecer el código de error numérico que arrojó GetLastError. Cualquiera de los dos comodines puede ser omitido, por lo que el formato de la excepción es totalmente flexible. Sólo considerar que en la llamada interna a Format, el texto del error es el primer parámetro y el código numérico el segundo. Otro ejemplo:
Código Delphi [-]
ghRaiseLastError ('No fue posible realizar la operación.'#13#10 +
  'Error interno %1:d (%0:s).');
Resultado:



Posteriormente agregaré la documentación detallada de estas dos funciones al manual de referencia.

Un saludo.

Al González.

Última edición por Al González fecha: 22-10-2013 a las 00:40:04.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sondeo sobre la biblioteca GH Freebrary Al González [GH Freebrary] 23 08-02-2015 21:12:03
GH Freebrary para Delphi XE4 Al González [GH Freebrary] 18 22-09-2014 18:24:04
GH Freebrary para Delphi XE2 Al González [GH Freebrary] 7 12-01-2014 08:49:35
Avanzando con GH Freebrary Al González [GH Freebrary] 13 23-03-2013 07:08:03
Introducción a GH Freebrary Al González [GH Freebrary] 0 18-03-2013 10:11:54


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


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