Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2016
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
¿Mejor manera de mover un directorio con ficheros de un sitio a otro?

Buenas:
Podrías decirme cual es la mejor manera de mover un directorio con ficheros de un sitio a otro.
Tanto del disco como de la red.
Gracias
Responder Con Cita
  #2  
Antiguo 25-08-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Si estas usando Lazarus bajo el S.O. Windows podes hacer:
Código Delphi [-]
...
uses Windows, ShellApi;

function MoveDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  fos.wFunc  := FO_MOVE;
  fos.fFlags := FOF_NOCONFIRMMKDIR + FOF_RENAMEONCOLLISION;
  fos.pFrom  := PChar(fromDir + #0);
  fos.pTo    := PChar(toDir);
  Result     := ShFileOperation(fos) = 0;
end;

Un ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not MoveDir('C:\Folder_A', 'C:\Folder_B\SubFolder_B\Folder_A') then
    ShowMessage('Error moviendo directorio');
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 26-08-2016
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
Ok, gracias

yo estoy usando solo free pascal de lazarus la aplicación es de consola.
De todas maneras es que soy muy nuevo no se donde pegar en la unit que genera lazarus
la linea de funcion:

function MoveDir(const fromDir, toDir: string): Boolean;

y el resto:

ZeroMemory(@fos, SizeOf(fos));
fos.wFunc := FO_MOVE;
fos.fFlags := FOF_NOCONFIRMMKDIR + FOF_RENAMEONCOLLISION;
fos.pFrom := PChar(fromDir + #0);
fos.pTo := PChar(toDir);
Result := ShFileOperation(fos) = 0;
Responder Con Cita
  #4  
Antiguo 26-08-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración


Y recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 26-08-2016
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
Si Disculpar.... de nuevo.
Necesitaria algo muy sencillo como por ejemplo esto que pusiste pero que funcione en free pascal (terminal)

Código Delphi [-]
begin
  if not MoveDir('C:\Folder_A', 'C:\Folder_B\SubFolder_B\Folder_A') then
    ShowMessage('Error moviendo directorio');
end;

La finalidad es recoger varios directorios y unirlos en una sola carpeta.
Bueno gracias de antemano
Responder Con Cita
  #6  
Antiguo 26-08-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

¿ Algo así ?
Código Delphi [-]
// Cabecera (opcional)
program Project1;

// inclusión de unidades a usar
uses Windows, ShellApi;

// declaración de funciones/procedimientos
function MoveDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  fos.wFunc  := FO_MOVE;
  fos.fFlags := FOF_NOCONFIRMMKDIR + FOF_RENAMEONCOLLISION;
  fos.pFrom  := PChar(fromDir + #0);
  fos.pTo    := PChar(toDir);
  Result     := ShFileOperation(fos) = 0;
end;

// cuerpo principal del programa
begin
  ...
  if not MoveDir('C:\Folder_A', 'C:\Folder_B\SubFolder_B\Folder_A') then
    Writeln('Error moviendo directorio');
  ...
end.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 29-08-2016
manujimenez manujimenez is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 11
Poder: 0
manujimenez Va por buen camino
No me va

Te agradezco un montón pero no me funciona ni consola con free pascal, ni con lazarus.
Cuando compilo con lazarus me tira esta error.

Código Delphi [-]
Unit1.pas (5,1) Fatal syntax error: "INTERFACE" expected but "USES" found.


Cuando lo compilo con free pascal:

Código Delphi [-]
Mueve_Dir.pas(15,17) Error: Illegal type conversion: "ShortString" to "PChar"
Mueve_Dir.pas(16,17) Error: Illegal type conversion: "ShortString" to "PChar"
Mueve_Dir.pas(17,3) Error: Identifier not found "Result"
Mueve_Dir.pas(22,3) Error: Illegal expression
Mueve_Dir.pas(23,3) Fatal: Syntax error, ";" expected but "IF" found

Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mejor manera de validar un EDIT oscarac OOP 3 25-05-2011 20:00:46
Tablas temporales. La mejor manera Wonni Conexión con bases de datos 14 10-07-2008 19:06:48
Mover Ficheros de Un Directorio a Otro jlalvarez OOP 4 07-05-2008 16:28:40
Firebird de la mejor manera david_uh Varios 7 19-01-2008 15:45:37
La mejor manera de Trabajar con Form manuelpr Varios 8 07-03-2005 17:08:14


La franja horaria es GMT +2. Ahora son las 21:30:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi