Newsgroup: it.comp.lang.delphi
Titolo: Errore copiando i file

ciao, ho bisogno di aiuto...
Ho buttato giù con l'aiuto di consigli amichevoli il seguente codice per la
copia di una directory:
procedure CopyFolder(const SrcFolder, DestFolder: string; OverWrite:
boolean);
var
  //declare structure
  MyFOStruct : TSHFileOpStruct;
  Src,
  Dst : string;
begin
  Src := SrcFolder;
  Dst := DestFolder;
  if (Src = '') or (Dst = '') or (CompareText(Src, Dst) = 0) then exit;
  if Src[Length(Src)] <> '\' then Src := Src + '\';
  Src := Src + '*.*' + #0#0;
  if Dst[Length(Dst)] = '\' then Delete(Dst,Length(Dst),1);
  Dst := Dst + #0#0;
  //Fill in structure
  with MyFOStruct do begin
  //set hwnd to the Handle property to make application the owner of the
progress dialog
    Wnd := Application.Handle;
    //specify a copy operation
    wFunc := FO_COPY;
    pFrom := PChar(Src);
    pTo   := PChar(Dst);
    //set the flags
    fFlags := FOF_ALLOWUNDO OR FOF_NOCONFIRMMKDIR OR
              FOF_FILESONLY OR FOF_SIMPLEPROGRESS;
    if not OverWrite then fFlags := fFlags OR FOF_RENAMEONCOLLISION;
  end;
  SHFileOperation(MyFOStruct);
end;
Delphi 6 lo compila ma al momento dell'esecuzione (tramite evento onclick di
un pulsante messo in una form) ottengo un errore di accesso enl modulo
kernel32.dll.
Il programma gira su Windows 2000.
Ho contrallato in rete per la chiamata di sistema SHFile Operation ma ho
letto che è supportata da Win2k.
Dove sbaglio?
Grazie dell'aiuto
Paolo

 ha scritto nel messaggio
news:ailms2$15is3m$1...@ID-83500.news.dfncis.de...

Ciao Paolo, ho provato il tuo codice è non mi da errore, anche se non fa
nulla.
Ho commentato queste righe (di cui a dir la verità non ho capito l'utilità:
se l'hai fatto per prendere tutti i file della directory, non è necessario):
[cut]
    if Src[Length(Src)] <> '\' then Src := Src + '\';
     Src := Src + '*.*' + #0#0;
   if Dst[Length(Dst)] = '\' then Delete(Dst,Length(Dst),1);
     Dst := Dst + #0#0;
[end cut]
ed il programma ha funzionato.
Prova poi a sostituire :
[cut]
  var
   //declare structure
   MyFOStruct : TSHFileOpStruct;
[end cut]
con:
  var
   //declare structure
   MyFOStruct : _SHFileOpStruct;

 wrote in message
news:Ztt39.37643$n04.1...@twister2.libero.it...





 Paolo
Hai provato a far girare il programma su altri computer?
Il drive D è una partizione del tuo computer oppure fà riferimento ad un
computer in rete?
Ciao e fammi sapere

 wrote in message
news:5Pt39.38425$lu5.1...@twister1.libero.it...


 Paolo
figurati, ciao

> ma a te ha funzionato la copia dei file?
dimenticavo... si ha funzionato

 wrote in message
news:L0u39.37735$n04.1...@twister2.libero.it...



    win 2000

 wrote in message
news:ailrkj$14nu0i$1...@ID-83500.news.dfncis.de...


 solo che mi piacerebbe sapere cosa fa casino
a questo punto, anche a me! :)
ciao

 Dove sbaglio?
Se ti può consolare, anche a me dà errore di protezione su Kernel32.dll.
Provo a darci un'occhiata anch'io adesso :)
--
Jax

 Provo a darci un'occhiata anch'io adesso :)
Minchia, ma chi sono... 5 minuti... vorrei specificare che SHFILEOP non l'ho
*mai* usata...
Se usi FOF_SIMPLEPROGRESS devi anche specificare il parametro lpszProgressTitle.
Infatti se provi a toglierlo dalle opzioni, va tutto liscio come un tonno...
Prova così:
    <...>
    fFlags := FOF_ALLOWUNDO OR FOF_NOCONFIRMMKDIR OR
        FOF_FILESONLY OR FOF_SIMPLEPROGRESS;
    lpszProgressTitle := 'Copia in corso...';
--
Jax che se la tira :)

> Jax che se la tira :)
Fai bene :),
ma mi puoi spiegare perchè sul mio computer il codice di Paolo non dava
errori?
Ciao e grazie

sei un grande...
ci stavo impazzendo e ho pure messo in subbuglio Al
grazie e a buon rendere
Paolo
"Jax" <rispo...@newsgroup.grazie> wrote in message
news:8Vv39.38878$lu5.1...@twister1.libero.it...


 errori?
Me lo sono chiesto anch'io... ma sinceramente non so darti una spiegazione (eh
insomma non posso sapere tutto :)))
Ma i file te li copiava correttamente?
--
Jax

 Ma i file te li copiava correttamente?
file e anche sottodirectory

 file e anche sottodirectory
LOL... allora non lo so proprio :)
--
Jax

 Se usi FOF_SIMPLEPROGRESS devi anche specificare il parametro
lpszProgressTitle.
Be', non che ci volesse tanto visto che sull'help e' scritto:
"lpszProgressTitle
Address of a string to use as the title of a progress dialog box. This
member is used only if fFlags includes the FOF_SIMPLEPROGRESS flag."
;)))
--------------------------------
Inviato via 
http://usenet.libero.it