Dosya yedekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gunes20000
Üye
Mesajlar: 12
Kayıt: 27 Nis 2005 09:34

Dosya yedekleme

Mesaj gönderen gunes20000 »

İyi günler

Programımın olduğu klasörde bulunan (ayar.ini ve yukle.ini) bu 2 dosyamı butona tıkladığımda gene aynı klasörde bulunan yedek isimli klasöre Rarlı olarak birleştirip ismini yedek diye değiştirip, tarih ve saatide dosya ismine ekleyerek kopyalamasını istiyorum.
Not:Klasörde Yedek isimli klasör yoksa onuda kontrol edebilirmiyiz.

Yardımlarınız için şimdiden teşekkürler
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: Dosya yedekleme

Mesaj gönderen brs »

viewtopic.php?f=2&t=35448&hilit=Copy

Cepten yaziyorum, ek olarak google da "delphi klasor yoksa" diye aratirsan onlarca kaynak bulursun buluncada kodlara entegre yaparsin.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
gunes20000
Üye
Mesajlar: 12
Kayıt: 27 Nis 2005 09:34

Re: Dosya yedekleme

Mesaj gönderen gunes20000 »

Hocam ilginizden dolayı teşekkür ederim.
Ancak Verdiğiniz linkteki kodları kendime bir türlü uyarlayamadım. yardımcı olursanız sevinirim.
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yedekleme

Mesaj gönderen ertank »

Merhaba,

Kullandığınız Delphi sürümünü bildirmemişsiniz. Aşağıdaki örnek Delphi 10.1. Update 2 ile çalışmaktadır.

Her ne kadar RAR dosyası oluşturmak istiyor olsanız da örnek kod ZIP dosyası oluşturmayı göstermektedir. Delphi içinde "native" olarak RAR desteği yoktur. Bu sebeple siz kendi tercihiniz RAR kütüphanesini ilgili kod üzerinde değişiklik yaparak kullanabilirsiniz.

Kod: Tümünü seç

procedure BackupINIFiles();
var
  Path: string;
  FileName: string;
  Zip: TZipFile;
begin
  Path := TPath.GetLibraryPath() + TPath.DirectorySeparatorChar;
  FileName := Path + 'yedek' + TPath.DirectorySeparatorChar + FormatDateTime('yyyy-mm-dd hh-nn', Now()) + ' yedek.zip';

  if not ForceDirectories(Path + 'yedek\') then
  begin
    ShowMessage('Yedek dizini oluşturulamıyor.' + sLineBreak + 'Dizin: ' + Path);
    Exit();
  end;

  if not FileExists(Path + 'ayar.ini') then
  begin
    ShowMessage('ayar.ini dosyası bulunamıyor.');
    Exit();
  end;

  if not FileExists(Path + 'yukle.ini') then
  begin
    ShowMessage('yukle.ini dosyası bulunamıyor.');
    Exit();
  end;

  Zip := TZipFile.Create();
  try
    Zip.Open(FileName, zmWrite);
    Zip.Add(Path + 'ayar.ini');
    Zip.Add(Path + 'yukle.ini');
    Zip.Close();
  finally
    Zip.Free();
  end
end;
gunes20000
Üye
Mesajlar: 12
Kayıt: 27 Nis 2005 09:34

Re: Dosya yedekleme

Mesaj gönderen gunes20000 »

Ertan Hocam Ben Delphi 7 kullanıyorum.
Rar dosyası diye bir zorunluluk yok hocam, sıkıştırılmış dosya olsun yeter, yani zip olsada sorun olmaz.
Bu kodları ben çalıştıramadım hocam. Benim versiyona uygun hale getirmemiz mümkünmü acaba.
Birde burada zip için hangi componenti kullanmamız gerekir acaba.
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yedekleme

Mesaj gönderen ertank »

Delphi 7 ile gelen standart bir ZIP bileşeni yoktur.

Ekteki örnek içinde ücretsiz Synopse projesinin sadece ZIP dosyası oluşturmaya yönelik pas ve obj dosyalarını bulabilirsiniz. Ayrıca kullanım örneği de yine dosya içinde mevcuttur.
Dosya ekleri
inizip.rar
(40.14 KiB) 116 kere indirildi
gunes20000
Üye
Mesajlar: 12
Kayıt: 27 Nis 2005 09:34

Re: Dosya yedekleme

Mesaj gönderen gunes20000 »

Hocam sağolasın sorunum çözüldü. Teşekkürler
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Dosya yedekleme

Mesaj gönderen xozcanx »

ertank yazdı:Delphi 7 ile gelen standart bir ZIP bileşeni yoktur.

Ekteki örnek içinde ücretsiz Synopse projesinin sadece ZIP dosyası oluşturmaya yönelik pas ve obj dosyalarını bulabilirsiniz. Ayrıca kullanım örneği de yine dosya içinde mevcuttur.
Merhaba Hocam,
ilgili pas dosyasını inceledim fakat istediğim sonucu elde edemedim.
Arşivin içine Klasör ve altındaki dosyaları ekleyebilirmiyiz?
yada eklediğimiz birden fazla dosya için ayrı ayrı yükleneceği konumu belirtebilir miyiz?
Teşekkürler.
Resim
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: Dosya yedekleme

Mesaj gönderen ertank »

Merhaba,

Anladığım kadarıyla Delphi XE veya daha yeni bir sürüm kullanıyorsunuz. Bu durumda Delphi ile gelen TZipFile sınıfını kullanabilirsiniz.

Kod: Tümünü seç

uses
  System.Zip;
  
procedure TForm1.Button2Click(Sender: TObject);
var
  Zip: TZipFile;
begin
  Zip := TZipFile.Create();
  try
    Zip.Open('yedek.zip', zmWrite);
    Zip.Add('ayar.ini', 'deneme\ayar.ini');
    Zip.Add('yedek/deflate.obj', 'C:\test\deflate.obj');
  finally
    Zip.Free();
  end;
end;
Yukarıdaki örnekte:
- ayar.ini zip dosyası içinde deneme dizini içine kaydediliyor.
- disk üzerindeki yedek dizini içinde bulunan deflate.obj dosyası zip dosyası içinde tam yol olarak kaydediliyor. Yani zip dosyası açıldığı zaman direk c:\test\deflate.obj konumuna açılacaktır.

Yine dikkat ederseniz dizin isimlerini / veya \ karakteri olarak bildirmekte sorun yok.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Dosya yedekleme

Mesaj gönderen xozcanx »

Hocam Açıklayıcı cevap için teşekkürler.
evet hocam üst sürüm kullanıyorum.Benim aradığım da bu 2. parametreydi, diğer componentler içinde baktığımda bu parametreyi görememiştim. "System.Zip" uses da ekliydi aslında, fazla araştırmadan dolayı baktım diye değerlendirip atladım sanırım :/
şimdi geriye kalan, kullanışlı bir şekilde bu parametreyi kodlara eklemek kaldı :)
Tekrardan teşekkürler.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla