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.
![Smilie](http://www.clubdelphi.com/foros/images/smilies/smile.gif)