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;
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;
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;
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;
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;