Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
Mover carpeta y todo su contenido

Utilizo esta funcion, pero no me funciona, me dice que no se puede leer del Archivo o Carpeta de origen, porque?

Código Delphi [-]
function MoverCarpeta(const carpetaOrigen,
  carpetaDestion: string) : boolean;
var
  FileOp: TSHFileOpStruct;
begin
  FillChar(FileOp, SizeOf(FileOp), #0);
  with FileOp do
  begin
    wFunc := FO_MOVE;
    Wnd := GetDesktopWindow;
    pTo := PChar(carpetaOrigen);
    pFrom := PChar(carpetaDestion+#0#0);
    fFlags := FOF_NOCONFIRMATION or
      FOF_SILENT or FOF_ALLOWUNDO;
  end;
  Result := (ShFileOperation(FileOp) = 0);
end;

Y la llamada es

Código Delphi [-]
procedure TMain.Button1Click(Sender: TObject);
var dir,name,dest,root:string;
begin
 root:=ExtractFilePath(Application.ExeName);
 dir:=root+'SvrDirectory\';
 dest:=root+'SvrHistory\';
 name:=ADOQuery1.FieldByName('carpeta').AsString;
 if ADOQuery1.RecordCount>0
   then begin
    //Muevo Dir
     if MoverCarpeta(dir+name,dest+name) 
       then 
     //Borra Dir
    // DeleteDir(dir+name);
       end;    
    ADOQuery1.Delete;
     ADOQuery1.Close;
     ADOQuery1.Open;
   end;
end;
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 27-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hombre, si no recuerdo mal mis clases de ingles, esto esta mal:
Código Delphi [-]
    pTo := PChar(carpetaOrigen);
    pFrom := PChar(carpetaDestion+#0#0);
Responder Con Cita
  #3  
Antiguo 30-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Talking JEje

jejej, no pude contenerme! no es el caso pero la observacion hace notar un pequeño BUG de "dedo"
Responder Con Cita
  #4  
Antiguo 30-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
Cita:
Empezado por cHackAll
jejej, no pude contenerme! no es el caso pero la observacion hace notar un pequeño BUG de "dedo"
jejejejejejejeje
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #5  
Antiguo 30-05-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por cHackAll
jejej, no pude contenerme! no es el caso pero la observacion hace notar un pequeño BUG de "dedo"
, Pero un BUG de "dedo" bien manejado.......

Código Delphi [-]
function MoverCarpeta(const carpetaOrigen,
  carpetaDestion: string) : boolean;
.......
.......
    pTo := PChar(carpetaOrigen);
    pFrom := PChar(carpetaDestion+#0#0);
.......
.......

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 30-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Sucede

Cuando mis programas sufren de ese BUG me da ganas de llorar luego de pasar horas buscando la falla entre centenares de lineas!

Pero estuvo muy jocosa la observacion de las "clases de Ingles"... jejeje

Saludos!
Responder Con Cita
  #7  
Antiguo 30-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por cHackAll
Cuando mis programas sufren de ese BUG me da ganas de llorar luego de pasar horas buscando la falla entre centenares de lineas!

Pero estuvo muy jocosa la observacion de las "clases de Ingles"... jejeje

Saludos!
No era mi intención ser jocoso, solo quería remarcar, quizá con demasiada ironía, que el parámetro pFrom se corresponde con la carpeta de origen y pTo con la de destino, justamente al revés de como estaba colocado. La verdad es que no me había fijado en como estaba escrito "carpetaDestion".
Responder Con Cita
  #8  
Antiguo 31-05-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
pero algunas veces deja copiar y otras no...

Hola Domingo, y amigos,
yo utilizo esa funcion, para copiar archivo, y algunas veces tambien me sale ese error,
Algunas veces utilizo mejor TMemoryStream, primero load file, y luego saveto, asi es para copiar, pero lo mejor es hacerlo como dice Domingo,
Como se evita ese error de NO SE PUEDE LEER EL DISPOSITIVO?
cuando esta ocupado por otro proceso, no se deja copiar, es claro, que no cortar, perooo deberia dejarse copiar,,,,
Gracias
Responder Con Cita
  #9  
Antiguo 31-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por JuanErasmo
perooo deberia dejarse copiar,,,,
Gracias
No tiene por qué, si el proceso está escribiendo en ese archivo, no debe dejar leer tampoco.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 31-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Continua el problema?

No soy muy íntimo de ShFileOperation, pero creo que es una API bastante interesante!

El error inicial del hilo era el error de "dedo" verdad? o me equivoco. Ahora si les aparece algunos errores de dispositivo u otro por qué no intentan poner antes la siguiente linea... talvez les sea útil.

Código Delphi [-]
SetErrorMode(SEM_FAILCRITICALERRORS);

Saludos!
Responder Con Cita
  #11  
Antiguo 03-06-2007
Keiso Keiso is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 20
Poder: 0
Keiso Va por buen camino
Esto te puede servir

Todo este código es pura API y me funciona muy bien con archivos y carpetas, "origen" y "destino" son strings globales y en la Uses añadir ShellApi.

Código Delphi [-]
procedure CopyProc;
var StructFile: _SHFILEOPSTRUCT;
begin
 if destino <> "" then
 // llenamos la estructura StructFile
  begin
   StructFile.Wnd:= 0;
   StructFile.wFunc:= FO_MOVE;
   StructFile.pFrom:= PChar(origen + #0);
 // #0 es importante o no copiará algunos archivos
   StructFile.pTo:= destino;
   StructFile.fFlags:= FOF_SIMPLEPROGRESS;
   StructFile.lpszProgressTitle:= PChar(origen + '  a  ' + destino);
   if SHFileOperation(StructFile) = 0 then
    MessageBox(0,'Copiado','OK',0);
   else
    MessageBox(0,'No copiado','Error',MB_ICONHAND);
  end
 else
   MessageBox(hMain,'Se debe seleccionar una carpeta de destino','Error',MB_ICONEXCLAMATION);
end;

Saludos!!!

Última edición por dec fecha: 09-10-2007 a las 20:26:46.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
FileStream pa copiar todo un directorio o carpeta Oxa78 Varios 0 23-03-2007 01:09:39
Como copiar todo el contenido de un directorio? JuanErasmo API de Windows 2 28-04-2006 09:54:26
Como eliminar una carpeta y todo su contenido? JuanErasmo C++ Builder 2 18-11-2005 22:59:54
Borrar todo el contenido en un image box climber01 Gráficos 2 30-03-2005 12:38:11
Limpiar contenido carpeta Chupi OOP 3 29-12-2004 00:28:34


La franja horaria es GMT +2. Ahora son las 15:33:02.


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