e321 Skrevet 16. mars 2004 Del Skrevet 16. mars 2004 Har prøvd i uker nå og få til og kopiere ei mappe med innhold men får det ikkje til ! Noen som kan hjelpe meg med dette "problemet"?? Eg vil at kvar gong det kommer ei ny fil i mappa blir den sikkerhets koppiert, kan noen gi exempler på dette? Takker for hjelp Lenke til kommentar
DidzisK Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 Dette funker hos meg. Hvis du ser på den, så har jeg lagt inn callback funksjon - slik at jeg kan få tilbakemelding når hver fil eller mappe blir kopiert - jeg bare definerer privat procedure på formen jeg kaller dette fra hvor jeg kan, for eksempel, endre tekst på label for å vise hvilken fil/mappe blir kopiert nå. Koden er ikke helt optimal, det mangler bl. a. mulighet til å ikke angi callback funksjonen (if assigned ... ), men du kan bare slette alle referanser til den hvis du ikke trenger den. type TCopyCallbackFunc = procedure(AName:String) of object; function CopyDir(ASourceDir,ADestDir:String;ACallback:TCopyCallbackFunc):Boolean; function CopyAFile(const ASourceFile:String; const ADestFile:String):Boolean; .... implementation function CopyAFile(const ASourceFile:String; const ADestFile:String):Boolean; begin Result:=CopyFile(PChar(ASourceFile), PChar(ADestFile),False); end; function CopyDir(ASourceDir,ADestDir:String;ACallback:TCopyCallbackFunc):Boolean; var SR:TSearchRec; FindRes:Integer; begin Result:=False; if not(DirectoryExists(ASourceDir)) then Raise Exception.CreateFmt('Source dir %s does not exist',[ASourceDir]); ACallback(ADestDir); if ((copy(ASourceDir,length(ASourceDir),1)='.') or (copy(ASourceDir,length(ASourceDir)-1,2)='..')) then begin Result:=True; Exit; end; ASourceDir:=IncludeTrailingBackslash(ASourceDir); ADestDir:=IncludeTrailingBackslash(ADestDir); ForceDirectories(ADestDir); FindRes:=FindFirst(ASourceDir+'*.*',faAnyFile,SR); try while FindRes=0 do begin if HasAttr(ASourceDir+SR.Name,faDirectory) then CopyDir(ASourceDir+SR.Name, ADestDir+SR.Name, ACallback) else try ACallback(ADestDir+SR.Name); CopyAFile(ASourceDir+SR.Name,ADestDir+SR.Name); except on e:exception do begin Result:=False; exit; end; end; FindRes:=FindNext(SR); end; finally SysUtils.FindClose(SR); end; end; Lenke til kommentar
e321 Skrevet 17. mars 2004 Forfatter Del Skrevet 17. mars 2004 Skal prøve dette Takker for hjelp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå