klasörü kopyalamak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

klasörü kopyalamak

Mesaj gönderen dt99 »

arkadaşlar ilk sorumu galiba yanlış sordum bunun içinde net yanıt alamadım, daha kısa ve basit olarak sorayım dedim.
yaptığım program 1 adet exe ve 3 adet data dosyasından oluşuyor toplam 4 dosya. klasörün adı proje. bu proje her dizinde çalışabiliyor ve kurulum gerektirmiyor. şimdi benim istediğim şu; bu proje klasöründeki exe dosyasının içinde bir butona tıklayınca bu proje klasörünü içindeki 4 dosya ile c:\Yedek içine atması gerekiyor. Source değişken dizin olabilir C:\ D:\ vb. herhangi bir yerde çalışıyor ama Target sabit C:\Yedek. sizden isteğim bunu yapabilecek bir component veya kod. herkeze sonsuz teşekkürler.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Usese shellapi ekle.

Kod: Tümünü seç

function KlasorKopyala(von, zieldir: string): boolean;
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
;

Kullanımı:

Kod: Tümünü seç

KlasorKopyala('c:\WINDATA', 'F:\WINDATAYEDEK');
Kolay gelsin.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Amaç yedeklemekse zip yada başka bir algoritma ile sıkıştırmak daha kullanışlı :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

Mesaj gönderen dt99 »

Kullanımı:

Kod: Tümünü seç

KlasorKopyala('c:\WINDATA', 'F:\WINDATAYEDEK');
Kolay gelsin.

hocam çok teşekkürler. ancak ben C:\WINDATA klasörünü belirtmek istemiyorum. program hangi sürücü ve hangi klasör veya hangi altklasörde ise bu kısmı otomatik olarak program seçsin.
Ben exe dosyasının çalıştığı dizini alabiliyorum, ancak bunu C:\WINDATA yazan kısımda gösteremiyorum. sorunum bu
Kullanıcı avatarı
hdayi
Kıdemli Üye
Mesajlar: 1284
Kayıt: 29 Oca 2004 01:53
Konum: Erciyes'in eteklerinden.

Mesaj gönderen hdayi »

Kod: Tümünü seç

c:\windata
yazan yere, exe'nin çalıştığı path'i yazacaksın.

Kod: Tümünü seç

Yol:=Exenin_Pathi;
KlasorKopyala(Exenin_Pathi, 'F:\WINDATAYEDEK');
Kolay Gelsin...
Bişnev in ney çün hikâyet mîküned
Ez cüdâyîhâ şikâyet mîküned
Resim
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

Mesaj gönderen dt99 »

hdayi yazdı:

Kod: Tümünü seç

c:\windata
yazan yere, exe'nin çalıştığı path'i yazacaksın.

Kod: Tümünü seç

Yol:=Exenin_Pathi;
KlasorKopyala(Exenin_Pathi, 'F:\WINDATAYEDEK');
Kolay Gelsin...
hocam aşağıdaki kodu kullanıyorum ancak dosya kopyalanamıyor hata mesajı alıyorum.

Kod: Tümünü seç

procedure TForm1.dxButton5Click(Sender: TObject);
var
yol:string;
begin
yol:=extractfilepath(Application.ExeName);
KlasorKopyala(yol, 'C:\aaa');
end;
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

"Hata veriyor" cümlesini lügatinizden silin. Bu cümle bir programcının asla kullanmaması gereken bir cümle.

"filanca nolu, filanca hatayı veriyor" gibi tam hata cümlesini yazın.

Kolay gelsin.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

dt99 demişki:
hocam aşağıdaki kodu kullanıyorum ancak dosya kopyalanamıyor hata mesajı alıyorum.

Kod:

procedure TForm1.dxButton5Click(Sender: TObject);
var
yol:string;
begin
yol:=extractfilepath(Application.ExeName);
KlasorKopyala(yol, 'C:\aaa');
end;
Hocam yanlış yapıyorsunzu da ondan. ExtractFilePath yerine ExtractFileDir demeniz gerekirdi.

Kod: Tümünü seç

KlasorKopyala(ExtractFiledir(Application.ExeName),'C:\KopyalanacakKlasorAdi');
Bu kod çalışıyor.Exe de dahil program klasöründe ne varsa C de KopyalanacakKlasorAdi adında bir klasör oluşturup içine atıyor.Hata da vermiyor.Burada Kopyalanacakklasör yerine istediğini yaz.
Kolay gelsin.
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

Mesaj gönderen dt99 »

Kod: Tümünü seç

"Hata veriyor" cümlesini lügatinizden silin. Bu cümle bir programcının asla kullanmaması gereken bir cümle. 

"filanca nolu, filanca hatayı veriyor" gibi tam hata cümlesini yazın.
hocam özür dilerim bi daha olmaz. çıkan hata mesajı şöyleydi

Kod: Tümünü seç

Dosya kopyalanamıyor: Kaynak dosya veya diskten okuyamıyor.
NewMember hocam ben kodda extractfilepath kullanıyordum sorun bu zannedersem. ExtractFiledir kullanınca problem halloldu. exe dosyasını başka bir yolla hallederim. Teşekkürler. Herkeze saygılar...
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

dt99 demişki:

Kod: Tümünü seç

NewMember hocam ben kodda extractfilepath kullanıyordum sorun bu zannedersem. ExtractFiledir kullanınca problem halloldu. exe dosyasını başka bir yolla hallederim. Teşekkürler. Herkeze saygılar...
Hocam exe dosyayıda kopyalıyor yani sorun yok.bu kod çalışıyor.Ben mesajı ilk gönderdiğimde exe kopyalanamıyor demiştim ama o zaman kodu ilk kez run etmiştim sanırım ondan kopyalamamıştı ve sonradan mesajımı editleyip exeninde kopyalandığını yazdım.Sanırım ben editleryene kadar okudunuz.
Yani dikkat ederseniz exeyide kopyalıyor.
Kolay gelsin.
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

Mesaj gönderen dt99 »

doğrudur hocam sağolun. bende mesaj yazdıktan sonra denedim. exe dosyasınıda kopyalıyor. sorun yok. yardımlarınız için teşekkür ederim.
akuyumcu63
Üye
Mesajlar: 386
Kayıt: 02 Tem 2007 09:43

Re: klasörü kopyalamak

Mesaj gönderen akuyumcu63 »

değerli arkadaşlar;

yukarıda belirtmiş olduğunuz bilgiler ışığında kodu kendime göre ayarladım. çok teşşekkür ederim. acaba winrar yada winzıp farmatında sıkıştırarak kopyalayabilirmiyiz. dataların winrar yada winzıplı dosyalar halinde yedeklenmesi daha güvenli olacağı düşüncesindeyim. kullandığım kodlar aşağıdadır.
delphi7 ve paradox kullanmaktayım. kolay gelsin.


function KlasorKopyala(von, zieldir: string): boolean;
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;
procedure TForm1.Button1Click(Sender: TObject);
VAR
S:string;
begin
S:=Datetostr(cxDateEdit1.Date);
KlasorKopyala('c:\CARIHSP63\CARIDATA', ''+DriveComboBox1.Drive +':\CARIHSP63_DATALAR\'+S+'');
end;
procedure TForm1.FormShow(Sender: TObject);
begin
cxDateEdit1.Date:=now;
end;
İsteyen, yapabildiğinden daha fazlasını yapar.
Cevapla