Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 20
[Gunman] Va por buen camino
Question Cortar y copiar archivos...

Buenoooo, tengo un conjunto de funciones y procedimientos para copiar y cortar archivos, el problema es que funcionan "cuando les da la gana" y no se por que.
Bueno, el objeto CutCopy es un objeto propio que tiene dos propiedades, List (la lista de archvios a cortar o copiar) y Func (la función a desempeñar), así que sólo pongo uno.
Antes que nada el código de la función Operation (lo único que hace es llamar a SHFileOperation, la he creado por comodidad)
Código Delphi [-]
procedure Operation(Wnd: HWND; wFunc: UINT; pFrom: PAnsiChar; pTo: PAnsiChar;
  fFlags: FILEOP_FLAGS; lpszProgressTitle: PAnsiChar);
var
  SHFileOpStruct: TSHFileOpStruct;
begin
  ShFileOpStruct.Wnd := Wnd;
  ShFileOpStruct.wFunc := wFunc;
  ShFileOpStruct.pFrom := pFrom;
  ShFileOpStruct.pTo := pTo;
  ShFileOpStruct.fFlags := fFlags;
  ShFileOpStruct.lpszProgressTitle := lpszProgressTitle; 
  SHFileOperation(SHFileOpStruct);
end;
El código de las acciones de Copiar y Cortar son idénticos, sólo cambia el valor de CutCopy.Func (ccCopy o ccPaste), así que sólo pongo una acción:
Código Delphi [-]
procedure TMainFrm.LcCopyActExecute(Sender: TObject);
var
  I: Integer;
begin
  CutCopy.List.Clear;
  for I := 0 to LcList.Items.Count - 1 do
  if LcList.Items[i].Selected then
  CutCopy.List.Add(LcCurrentDir+LcList.Items[i].Caption);
  CutCopy.Func := ccCopy;
end;
Y finalmente el código de la acción Paste, que es la que se encarga de llamar a la función Operation (es decir, SHFileOperation):
Código Delphi [-]
procedure TMainFrm.LcPasteActExecute(Sender: TObject);
var
  I: Integer;
begin
  if CutCopy.Func = ccCut then
  begin
    for I := 0 to CutCopy.List.Count - 1 do
    begin
    Operation(Handle, FO_MOVE, PAnsiChar(CutCopy.List.Strings[i]),
              PAnsiChar(LcCurrentDir+ExtractFileName(CutCopy.List.Strings[i])),
              FOF_SIMPLEPROGRESS+FOF_NOCONFIRMATION,'');
    end;
  end;
  if CutCopy.Func = ccCopy then
  begin
    for I := 0 to CutCopy.List.Count - 1 do
    begin
    Operation(Handle, FO_COPY, PAnsiChar(CutCopy.List.Strings[i]),
              PAnsiChar(LcCurrentDir+ExtractFileName(CutCopy.List.Strings[i])),
              FOF_SIMPLEPROGRESS+FOF_NOCONFIRMATION,'');
    end;
  end;
  LcRefreshAct.Execute;
  CutCopy.Func := ccNone;
end;
Bueno, pues como he dicho, esto me funciona con algunos archivos y carpetas y con otros no, a veces si uno no podia copiarlo cierro el programa y si puedo copiarlo. Por qué sucede esto? Falta algo? Sobra algo?
Muchas gracias de anticipado, y disculpad por haceros leer tan largo post...
__________________
l2prog.co.nr
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
Copiar Archivos frankmch API de Windows 10 26-02-2014 01:21:31
Copiar pegar y cortar una imagen!!!! Juangu Gráficos 4 09-06-2005 18:28:24
Copiar archivos Juan Carlos Varios 3 11-06-2004 11:30:05
Copiar archivos Ignacio Varios 6 05-01-2004 03:08:38
Copiar Archivos Cronos Varios 4 13-08-2003 17:27:19


La franja horaria es GMT +2. Ahora son las 03:53:29.


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