Merhaba arkadaşlar, network üzerinden bir klasörün içerisinde bulunan tüm dosyaları kendime kopyalıyourm ancak o an çalışan dosyayı haliyle kopyalayamıyorum. hata yakalama kısmımda çalışmıyor. çalışan dosyayı kopyalamama ya da hata olduğunda sıradaki dosyayı kopyalamayı nası yapabilirim ?
Files := FindFirst(Ori + '\*.*', faAnyFile, Search);
while Files = 0 do
begin
copyaktif:=True;
if Search.Attr <> faDirectory then
begin
Fori := Ori + '\' + Search.Name;
FDesti := Desti + '\' + Search.Name;
if not FileExists(FDesti) then
begin
S := TFileStream.Create( FOri, fmOpenRead );
try
T := TFileStream.Create( FDesti,fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
end;
end;
Files := FindNext(Search);
end;
FindClose(Search);
Klasör kopyalama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Re: Klasör kopyalama
Aşağıdaki kodu dener misin.
uses ShellApi;
uses ShellApi;
Kod: Tümünü seç
function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags := FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: Klasör kopyalama
Neden dosyayı önce okuyup yeni dosya oluşturup içine yazıyorsun?
Özel bir nedeni yoksa aşağıdaki api en pratik çözümdür.
Özel bir nedeni yoksa aşağıdaki api en pratik çözümdür.
Kod: Tümünü seç
if CopyFile(KaynakDosya, HedefDosya, True|False) then
begin
//Başarılı
end else
begin
//Başarısız
end;
CopyFile('C:\aa.txt', 'd:\aa.txt', False); // Kopyalanan yerde dosya varsa üzerine yazması için.
CopyFile('C:\aa.txt', 'd:\aa.txt', True); // Kopyalanan yerde dosya varsa üzerine yazmaması için.