Klasör kopyalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
master_20
Üye
Mesajlar: 85
Kayıt: 27 Eki 2010 09:42

Klasör kopyalama

Mesaj gönderen master_20 »

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);
Kullanıcı avatarı
muratmutlu
Üye
Mesajlar: 57
Kayıt: 02 Tem 2005 02:44
Konum: Antalya

Re: Klasör kopyalama

Mesaj gönderen muratmutlu »

Aşağıdaki kodu dener misin.

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;
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Klasör kopyalama

Mesaj gönderen xxxjedixxx »

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.

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.
Cevapla