Discussione chiusa
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Funzione Copia Files

  1. #1
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703

    Funzione Copia Files

    ciao a tutti, in Delphi per copiare dei files, navigando ho trovato questa funzione.. ma non funge

    codice:
    function CopiaFile( vVanFile, vNaarFile : string ; vOverschrijven : boolean ) : boolean;
    
    var sr: TSearchRec;
        FileAttrs: Integer;
        NaarDir, VanDir : string;
    
    begin
      FileAttrs := FileAttrs + faAnyFile;
      NaarDir   := ExtractFilePath(vNaarFile);
      VanDir    := ExtractFilePath(vVanFile);
    
      if FindFirst( vVanfile, FileAttrs, sr) = 0 then
        begin
          repeat
             CopiaFile(Vandir+sr.Name , NaarDir+sr.Name, vOverschrijven);
          until FindNext(sr) <> 0;
          SysUtils.FindClose(sr);
        end;
    end;
    qualcuno ne conosce una migliore???

    grazieeee
    Perfavore commentate l'intervento..

  2. #2
    Luogo
    Provincia di Piacenza
    Post
    1,001
    Blogs
    2
    Avevo trovato un bellissimo esempio che usava tre funzioni diverse di Windows. Devo cercarlo, dammi il tempo.

  3. #3
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703
    ok....

    grazie per la tua disponibilitààà come sempre

    davvero GENTILE
    Perfavore commentate l'intervento..

  4. #4
    Luogo
    Provincia di Piacenza
    Post
    1,001
    Blogs
    2
    Quello che hai riportato sembra un esempio che arriva dall'olanda, ma non fa alcuna copia di file, semplicemente cicla richiamando se stessa. D'altronde FindFirst di certo non copia nulla... A che serve?
    Penso che comunque ti possa bastare la funzione CopyFile della libreria Windows:

    codice:
    Windows.CopyFile(pChar(InFileName),
                              pChar(OutFileName),
                              FALSE //Continue if Exists
                              );
    Abbinata a FindFirst e FindNext puoi usarla per copiare files in directory e sottodirectory.

    Altrimenti puoi usare TFileStream:

    codice:
    Procedure CopyFileStream( Const InFileName, OutFileName: String );
    Var
      S,T: TFileStream;
    Begin
      S := TFileStream.Create(InFileName, fmOpenRead);
      try
        T := TFileStream.Create(OutFileName, fmOpenWrite or fmCreate);
        try
          T.CopyFrom(S, S.Size);
          FileSetDate(T.Handle, FileGetDate(S.Handle));
        finally
          T.Free;
        end;
      finally
        S.Free;
      end;
    End;
    Altrimenti ancora usi BlockRead e BlockWrite, ma è un po' più complesso.
    Ultima modifica di M.A.W. 1968; 28-05-2009 23:09 
    owner - Kona s.r.l.

  5. #5
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703
    Ma con questa funzione... mi copia tutti i file e le sottodirectory contenute nella directory che desidero copiare????

    GRAZIE
    Perfavore commentate l'intervento..

  6. #6
    Luogo
    Provincia di Piacenza
    Post
    1,001
    Blogs
    2
    No, ti copia un file.
    Usa FindFirst e FindNext per navigare nelle directory e leggerne il contenuto.
    Il tuo esempio olandese è un buon inizio.

  7. #7
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703
    ho trovato questa funzione... ma che devo ancora testare....
    Chissà se mi farà la copia della cartella con le sottocartelle...

    codice:
    procedure princi(dirda, dira : string);
    var
      FOS :TSHFileOpStruct;
    begin
      with FOS do begin
        //Wnd := Self.Handle;
        wFunc := FO_COPY;
        pFrom := pchar(dirda + '\' + '*.*');
        pTo := pchar(dira);
        fFlags := FOF_NoConfirmMkDir;
      end;
      SHFileOperation(FOS);
    end;
    che ne pensi?
    Perfavore commentate l'intervento..

  8. #8
    Luogo
    Provincia di Piacenza
    Post
    1,001
    Blogs
    2
    Interessante. Mai usata per copiare cartelle.
    Uso SHFileOperation solo per mandare i files nel cestino.
    Fammi sapere se copia anche le sottodirectory.
    E cosa accade se esistono già files e directory?

  9. #9
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703
    La funzione, FUNGE alla grande

    copia tutto, cartelle vuote e piene, naturalmente... con sottocartelle!!!

    L'avevo trovata in un sito circa 3 anni fa, l'avevo nelle mie librerie, ma non sapevo che fungesse così alla grande, con qualche ricerchetta l'ho trovata


    TI salutooooo
    Perfavore commentate l'intervento..

  10. #10
    motoboy non è in linea Scribacchino
    Luogo
    Puglia
    Post
    703
    ciao, stavo sperimentando la copia della procedura che mi hai inserito

    codice:
    Procedure CopyFileStream( Const InFileName, OutFileName: String );
    Var
      S,T: TFileStream;
    Begin
      S := TFileStream.Create(InFileName, fmOpenRead);
      try
        T := TFileStream.Create(OutFileName, fmOpenWrite or fmCreate);
        try
          T.CopyFrom(S, S.Size);
          FileSetDate(T.Handle, FileGetDate(S.Handle));
        finally
          T.Free;
        end;
      finally
        S.Free;
      end;
    End;
    dove ho messo...

    codice:
    CopyFileStream('c:\software\*.*', 'e:\');
    ma non mi funge ;-)

    del resto ho provato anche così

    codice:
    CopyFileStream('c:\software\', 'e:\')
    ma niente...

    il mio intento era quello di copiare unicamente i files dalla cartella software, escludendo le sottodirectory
    Perfavore commentate l'intervento..

Discussione chiusa
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi