Ver Mensaje Individual
  #22  
Antiguo 05-06-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Reputación: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Es curioso, ¿no?

Código Delphi [-]
  // SysUtils.pas


function Win32Check(RetVal: BOOL): BOOL;
begin
  if not RetVal then RaiseLastOSError;
  Result := RetVal;
end;

procedure RaiseLastOSError;
begin
  RaiseLastOSError(GetLastError);
end;

procedure RaiseLastOSError(LastError: Integer);
var
  Error: EOSError;
begin
  if LastError <> 0 then
    Error := EOSError.CreateResFmt(@SOSError, [LastError,
      SysErrorMessage(LastError)])
  else
    Error := EOSError.CreateRes(@SUnkOSError);
  Error.ErrorCode := LastError;
  raise Error;
end;

O sea. Si la función del API retorna "false" (esto usando "Win32Check"), levantamos una excepción con el último error del sistema. Cuando hacemos esto miramos, precisamente, el valor de "GetLastError", y creamos una excepción "EOSError" con el mensaje que consigamos de "SysErrorMessage"...

Y si "GetLastError" retorna un bonito cero... creamos la excepción con el mensaje "Error desconocido"...

¿Sólo a mí me parece curioso, luego de haber seguido este Hilo desde un principio?

Ahora, hasta ahí llego... me parece curioso, me llama la atención, pero, tampoco sé decir exactamente porqué...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita