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

Te agradezco el enlace egostar. Curiosamente, el autor del código visto estaría en las mismas que yo, puesto que escribe algo muy similar a lo que yo mismo escribo:

Código:
   iSHerr = SHFileOperation (&shfos);
   if (iSHerr == 0)
      AfxMessageBox ("Worked fine");
   else
   {
      wsprintf (szDebug, "SHFO gave error %d", GetLastError());
      AfxMessageBox (szDebug);
   }
Bien. El caso es que, efectivamente, la función "SHFileOperation" no retornará cero en caso de error, así que el código:

Código:
      wsprintf (szDebug, "SHFO gave error %d", GetLastError());
      AfxMessageBox (szDebug);
... se ejecutaría en caso de que la función "SHFileOperation" fallase. Pero el tema está en que también aparecería un mensaje de error del sistema... sin que uno, aparentemente, pueda hacer nada por evitarlo.

Y añadiré algo más aún... haciendo algo más o menos así:

Código Delphi [-]
begin

  if SHFileOperation() = 0 then
    TNbUtilities.FijarVariable(rsVarResultadoAccion,rsValorTrue)
  else
  begin
    TNbUtilities.FijarVariable(rsVarResultadoAccion,rsValorFalse);
    TNbUtilities.FijarVariable(rsVarUltimoError,SysErrorMessage(GetLastError()));
  end;

Si no existe la carpeta a borrar (suponiendo que esto es lo que vamos a hacer), efectivamente, se ejecuta el "else" del código de más arriba, pero, ¡el mensaje que obtengo de "SysErrorMessage" es "La operación se completó correctamente"...

O sea... definitivamente algo se me escapa en todo esto. Pero gracias egostar, verás como al final sacamos algo en claro entre todos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita