Bir Klasör'ü tüm dizinleri ile,ileri ve geri Kopyalamak.

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Ottoman

Bir Klasör'ü tüm dizinleri ile,ileri ve geri Kopyalamak.

Mesaj gönderen Ottoman »

Allahın Selamı üzerinize olsun!
Forum'larda,Klasör/Dosya kopyalama ile ilgili bir çok kod'lar bulabilirsiniz,Ben bu makalede ,toparlayarak, bir Klasörü ve içindeki tüm klasörleri ve Dosyaları tümüyle Kopyalamayı ve Tekrar geri yüklemeyi yaparak(Kopyaları oluşmadan) bilgilerimizi, tazeleyip ,yeni başlayan arkadaşlarımıza da yardımcı olması düşüncesiyle ilk önce kullanacağım 3 fonksiyon'la başlıyorum;

Uses'e "ShellApi;" Ekleyiniz.//Klasik bir giriş oldu galiba.....

Aşağıdaki 3 Fonksiyon'u Unit'e direk yapıştırıyoruz.(Fonksiyonlar "Kullanım" la ilgili kod'ların üstünde olacak).

Birinci Fonksiyon;

Kod: Tümünü seç

function copydir(von,zieldir: String): boolean;//Kopyalıyor.... 
var fos: TSHFileOpStruct; 
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
wFunc := FO_COPY; 
fFlags := FOF_FILESONLY; 
pFrom := PChar(von+#0); 
pTo := PChar(zieldir) 
end; 
Result:=(0=ShFileOperation(fos)); 
end;
İkinci fonksiyon;

Kod: Tümünü seç

function movedir(von,zieldir: String): boolean;//Yer açıyor....
var fos: TSHFileOpStruct; 
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
wFunc := FO_MOVE; 
fFlags := FOF_FILESONLY; 
pFrom := PChar(von+#0); 
pTo := PChar(zieldir) 
end; 
Result:=(0=ShFileOperation(fos)); 
end; 
Üçüncü Fonksiyon;

Kod: Tümünü seç

function deldir(dir: String): boolean;//Siliyor........... 
var fos: TSHFileOpStruct;
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
  wFunc := FO_DELETE; 
  fFlags := FOF_SILENT or FOF_NOCONFIRMATION; 
  pFrom := PChar(dir+#0); 
end;
Result:=(0=ShFileOperation(fos)); 
end;
Fonksiyonlarımız hazır,şimdi de son darbeyi vuralım........
Kullanımı;
Kopyalama;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);//Hedef'e Kopyalıyor.....
begin
{'c:\download' -> 'c:\'}
if copydir('c:\dosya','c:\program\') then //"dosya" Klasörü ve içindeki tüm dosyalar "program" klasörünün içine kopyalanır.
   begin
    Form1.Caption:=('Dosyalar Kopyalandi    ');
   end;
end;
Geri Kopyalama;

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);//Geri kopyalama...
begin
{'c:\download' -> 'c:\'}
if copydir('c:\program\dosya','c:\') then //Proğram Klasörünün içindeki "dosya" klasörü tekrar "c:\"'ye kopyalanır
   begin
    Form1.Caption:=('Dosyalar Geri Yüklendi    ');
   end;
end;
......Böylece Tüm Klasörler ve tüm dosyalar alt dizinleriyle beraber kopyalanır, "c" Sürücü değiştirilerek diğer sürücülere veya sürücülerden de kopyalama yapabilirsiniz!..Uyarılarınız! benim için bir şereftir..Herkese hayırlı çalışmalar......
Cevapla