PDA

Ver la Versión Completa : Problmas con SHFILEOPSTRUCT


perrogrun
30-07-2004, 16:52:50
Hola amigos, estoy haciendo un programita para hacer copias de seguridad y para copiar los archivos utilizo SHFILEOPSTRUCT, todo funciona bien, pero cuando hay algún archivo que no ha creado el usuario que corre el programa o hay un archivo en uso me dice que es imposible copiarlo y se me para el programa, mi pregunta es si hay alguna manera de que si encuentra este problema, salte ese archivo y continúe con el siguiente.

Un saludo a todos y gracias.

perrogrun
12-08-2004, 20:26:06
Ya está solucionado,

function CopiaTodo(Origen,Destino : String) :
LongInt;
var
F : TShFileOpStruct;
sOrigen, sDestino : String;
begin
Result := 0;
sOrigen := Origen + #0;
sDestino := Destino + #0;

with F do
begin
Wnd := Application.Handle;
wFunc := FO_COPY;
pFrom := @sOrigen[1];
pTo := @sDestino[1];
fFlags := FOF_MULTIDESTFILES or FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR or FOF_NOERRORUI;
end;
Result := ShFileOperation(F);
if Result<>0 then
begin
form2.Memo1.Lines.Add('');
form2.Memo1.Lines.Add('ERROR AL COPIAR EL FICHERO ' + origen +' A ' + destino );
form2.Memo1.Lines.add('ESTE ERROR PUEDE SER PRODUCIDO PORQUE EL ARCHIVO');
form2.Memo1.Lines.Add('ESTÁ EN USO CUANDO SE ESTÁ COPIANDO');
form2.Memo1.Lines.Add('');
form2.Memo1.Lines.Add('');
end;
end;

La cuestión era poner FOF_NOERRORUI en las flags para que no aparezca el error, luego para enterarme que ha habido un error lo comunico en un memo ya que si Result es diferente de 0 es que hay un error al copiar.

Bueno, la verdad es que esparaba un poco más de ayuda por vuestra pero...
... la vida es así.

Si quereis más información sobre SHFILEOPSTRUCT aquí teneis el link (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp)