Copiar, Mover, Borrar o Renombrar archivos.

Si queremos hacer una operación de este tipo al estilo Windows, el siguiente ejemplo mueve un fichero que indicamos a la unidad A: utilizando la función SHFileOperation() que recibe como parámetro una estructura TSHFileOpStruct. La función devuelve un valor 0 si no encuentra errores.

procedure TForm1.Button1Click(Sender: TObject);
var lpFileOp: TSHFileOpStruct;
begin

    { Relleno de la estructura }
    lpFileOp.Wnd := Self.Handle;
    lpFileOp.wFunc := FO_MOVE;
    lpFileOp.pFrom := PChar('C:\d51.gif' + #0#0);
    lpFileOp.pTo := PChar('A:\' + #0#0);
    lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY;
    lpFileOp.fAnyOperationsAborted := FALSE;
    lpFileOp.hNameMappings := nil;
    lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0);

    { Mover el archivo }
    SHFileOperation(lpFileOp);

end;

Si en lugar de moverlo queremos hacer una copia lo conseguimos sustituyendo en las líneas anteriores:

lpFileOp.wFunc := FO_COPY;

Si es borrar el fichero:

lpFileOp.wFunc := FO_DELETE;

e ignora la línea

lpFileOp.pTo := PChar(‘A:\’ + #0#0);

Si se trata de renombrarlo:

lpFileOp.wFunc := FO_RENAME;