Newsgroup: it.comp.lang.delphi
Titolo: [Copia di Piu File]... richiesta di aiuto

Gentili partecipanti di questo newsgroup
sono un programmatore delphi 5 (pro) da pochi mesi, e durante la
realizzazione di una funzione mi sono scontrato con il seguente problema:
Devo copiare in locale diverse tabelle paradox, ma subito mi sono scontrato
con l'esigenza di copiare i relativi file accessori (indici, ecc. ecc.) e
non so quali file sono da copiare.
Esiste una funzione che copia i file in questo modo ? Ad es. miofile.*
Accetto qualsiasi tipo di suggerimento.
Anticipatamente ringrazio tutti coloro che vorranno darmi una mano.
Saluti
Michele c/o Folli Sistemi


wrote:

Spulciando tra le mie librerie ho trovato questa funzione che non mi
ricordavo neppure di avere scritto :-) (eheheh succede).
Dovrebbe fare al caso tuo. 
Occhio che NON č object oriented e quanlche purista del gruppo
potrebbe everne a male ;-)
Il parametro Source accetta wildcards, dest č la directory di
destinazione, Overwrite a true sovrascrive i file gią esistenti e
count torna il numero di file copiati.
Non ci sono controlli d'errore, quelli li lascio da fare a te ehehehe.
function FileCopy(Source, Dest: string; Overwrite: Boolean; var Count:
Integer): Boolean;
var
  SearchRec: TSearchRec;
  DosError, I: Integer;
  FilesList: TStringList;
  SourcePath: string;
begin
  Result := False;
  Count := 0;
  if (Length(Source) = 0) or (Length(Dest) = 0) then
    Exit;
  if Dest[Length(Dest)] <> '\' then
    Dest := Dest + '\';
  if not DirectoryExists(Dest) then
    Exit;
  FilesList := TStringList.Create;
  DosError := FindFirst(Source, faAnyFile - faDirectory, SearchRec);
  while DosError = 0 do begin
    FilesList.Add(SearchRec.Name);
    DosError := FindNext(SearchRec);
  end;
  FindClose(SearchRec);
  SourcePath := ExtractFileDir(Source);
  if SourcePath[Length(SourcePath)] <> '\' then
    SourcePath := SourcePath + '\';
  for I := 0 to FilesList.Count - 1 do
    if CopyFile(PChar(SourcePath + FilesList[I]), PChar(Dest +
FilesList[I]), Overwrite)  then
      Inc(Count)
    else
      Break;
  Result := FilesList.Count = Count;
  FilesList.Free;
end;
-- 
"Ciao Rex, che cavolo di situazione eh? Due dentro, due fuori, puo' succedere di tutto!"

Dimeticavo...
devi aggiungere: 
uses FileCtrl;
Ciao,
Massimo.


 destinazione, Overwrite a true sovrascrive i file già esistenti e


 ha scritto nel messaggio
news:lvtR6.6592$i71.2...@news.infostrada.it...
: Gentili partecipanti di questo newsgroup

:
:

"FOLLI SISTEMI" ha scritto nel messaggio
| Devo copiare in locale diverse tabelle paradox, ma subito mi sono
| scontrato con l'esigenza
| di copiare i relativi file accessori (indici, ecc. ecc.) e
| non so quali file sono da copiare.
|
| Esiste una funzione che copia i file in questo modo ? Ad es. miofile.*
|
|
uses ShellAPI;
function CopiaPiuFile( const Sorgente, Destinazione: String): Boolean;
var
    FileOp: TSHFileOpStruct;
begin
  with FileOp do
  begin
     Wnd := Application.Handle;
         // recupera l'handle dell'applicazione
     wFunc := FO_COPY;
        // imposta l'operazione da compiere, cioč COPIA
     pFrom := PChar(Sorgente);
     pTo := PChar(Destinazione);
     fFlags := FOF_ALLOWUNDO or FOF_SILENT;
       // flag di controllo: preservare le informazioni
       // per l'undo e non mostrare alcun dialogo
      // vedere l'help per maggiori info
  end;
  Result := SHFileOperation(FileOp) = 0;
      // se il risultato č uguale a zero allora tutto č OK
end;
Da usare in questa maniera, per esempio:
Copiapiufile('a:\miofile.*','c:\');
Oppure
var
 TuttoOK : boolean;
Begin
 TuttoOK := Copiapiufile('a:\miofile.*','c:\');
end;
Ciao.
ACSH
---------------------------
La fine del mondo sta per arrivare ...
salvate i documenti aperti!