kopyalarken source dizini exe nin çalıştığı dizin olabilirmi

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

kopyalarken source dizini exe nin çalıştığı dizin olabilirmi

Mesaj gönderen dt99 »

arkadaşlar aşağıdaki kodla tüm klasörümü sorunsuzca kopyalayabiliyorum. ancak source dizinini exe dosyasının çalıştığı dizin olarak programın kendisinin bulmasını istiyorum, ama bu şekildede kopyalama hatası mesajı alıyorum. ExctractFilePath(Application.ExeName);
ile aldığım değeri source bölümüne aktarıyorum fakat sonuç yine hata. bu konuda yardımlarınıza ihtiyacım var. saygılar..

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject); 
var 
  OpStruc: TSHFileOpStruct; 
  frombuf, tobuf: Array [0..128] of Char; 
Begin 
  fillChar( OpStruc, Sizeof(OpStruc), 0 ); 
  FillChar( frombuf, Sizeof(frombuf), 0 ); 
  FillChar( tobuf, Sizeof(tobuf), 0 ); 
  StrPCopy( frombuf, 'c:\Dosyalar\*.*' );//bu kısım otomatik olarak exe dosyasının çalıştığı dizin olabilirmi  
  StrPCopy( tobuf, 'c:\Yedek' ); 
  With OpStruc DO Begin 
    Wnd:= Handle; 
    wFunc:= FO_COPY; 
    pFrom:= @frombuf; 
    pTo:=@tobuf; 
    fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; 
  end; 
  ShFileOperation( OpStruc ); 
end;
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

abi kullanım ihlali

yani sen windowsta kullanılan bir dosyayı nasıl kopyalamıyorsan sebeb
bu
En son tuanna tarafından 12 Ara 2005 09:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,

Aldığınız mesaj "kopyalama hatası" cümlesindemi ibaret başka ip uçlarıda varmı?
birde çalışan bir exe dosyasını özel bir durum yoksa kopyalayabilmen gerekir, mesaj bize tam bilgi verebilir XP kullanıyorsan olay geçmişinden oluşan hatayla ilgili detaylara ulaşmaya çalış.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
dt99
Üye
Mesajlar: 8
Kayıt: 02 Ara 2005 10:13

Mesaj gönderen dt99 »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: Array [0..128] of Char;
  dizin:string;
  Begin
  dizin:=extractfilepath(application.exename);// buradan dizinin tam yolunu alıyorum
  ShowMessage(dizin);
  fillChar( OpStruc, Sizeof(OpStruc), 0 );
  FillChar( frombuf, Sizeof(frombuf), 0 );
  FillChar( tobuf, Sizeof(tobuf), 0 );
  StrPCopy( frombuf, 'dizin' );// galiba bu kısımı yanlış yazıyorum (sorun burda zaten)
  StrPCopy( tobuf, 'c:\Yedek' );
  With OpStruc DO Begin
    Wnd:= Handle;
    wFunc:= FO_COPY;
    pFrom:= @frombuf;
    pTo:=@tobuf;
    fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
  end;
  ShFileOperation( OpStruc );
end;
şu şekilde yapmaya çalışıyorum, hata yapıyorsam kusura bakmayın acemiliğime sayın...

çıkan hata mesajı

Kod: Tümünü seç

Dosya kopyalanamıyor: Kaynak dosya veya diskten okuyamıyor.
programın kurulum yok herhangi bir dizinde çalışabilir. bu nedenle çalıştığı yerden C:\Yedek klasörüne dosyaların kopyalanması gerekiyo. Çalışma dizini değişken kopyalama yeri sabit olacak...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

//drony@mynet.com
//icq:266148308

procedure CopyDirectory(Ori, Desti : string);
var
Files : integer;
FOri, FDesti : string;
ok : boolean;
Search : TSearchRec;
begin
Files := FindFirst(Ori + '\*.*', faAnyFile, Search);
while Files = 0 do
begin
if Search.Attr <> faDirectory then
begin
FOri := Ori + '\' + Search.Name;
FDesti := Desti + '\' + Search.Name;
ok := CopyFile(PChar(FOri),PChar(FDesti),false);
if not ok then ShowMessage('Kopyalandı: '+
Search.Name);
end
else
begin
if (Search.Name <> '.') and (Search.Name <> '..') then
begin
ok := CreateDir(Desti + '\' + Search.Name);
if not ok then ShowMessage('Kopyalanamadı: '+
Search.Name)
else CopyDirectory(Ori+'\'+Search.Name,Desti+'\'+Search.Name);
end;
end;
Files := FindNext(Search);
end;
FindClose(Search);
end;


Kodbanktan alındı istersen bir de bu procedure kullan
Siz hayal edin...Biz yapalım TuannaSoft...
Kilitli