Klasör Yeniden Adlandırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

Klasör Yeniden Adlandırma

Mesaj gönderen DelphiMania »

selamlar
programımımda belirtilen klasörün ismini belirtilen isme yeniden adlandırmak istiyorum ama sürekli sorun çıkıyor..neden olduğunu bir türlü anlayamadım..birkaç kere sorunsuz değiştiriyor ondan sonra tekrar hiç değişmiyor..tamamen rastgele yani..
aşağıdaki kodu kullanıyorum birkaç kod daha denedim ama hepsi aynı kapıya çıkıyor zaten.. ne yapmam gerek lütfen yardın edin ? sorunsuz bir klasör yeniden adlandırma yapmak istiyorum..

Kod: Tümünü seç

procedure RenameDir(DirFrom, DirTo: string);
var
  shellinfo: TSHFileOpStruct;
begin
  with shellinfo do
  begin
    Wnd    := 0;
    wFunc  := FO_RENAME;
    pFrom  := PChar(DirFrom);
    pTo    := PChar(DirTo);
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or
              FOF_SILENT or FOF_NOCONFIRMATION;
  end;
  SHFileOperation(shellinfo);
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Nedeni hakkında fikrim yok ama ben Dosya İsmi değiştirdiğimiz RenameFile ile her ikisini de yapabiliyorum. Sen de dene hak vereceksin.

Kod: Tümünü seç

  RenameFile( 'C:\KlasorAdi', 'C:\YeniKlasor');
- Sendeki durumda ise klasör içeriğindeki dosya açıksa ya da kısaca klasör içeriği başka bir uygulama tarafından kullanılıyorsa diyelim, paylaşım sorunundan olmalı. Böyle bir sorun yoksa yani hata vermediği halde işlem de yapmıyorsa ona yorum yapamıycam...
Resim
Resim ....Resim
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

Mesaj gönderen DelphiMania »

Selam
cevabınız için teşekkürler renamefile ile de denemiştim ama aynı yine..
Klasör ismini değiştikten sonra ChDir ile yeni klasör ismini programa current directory olarak atıyorum (bunu yapmam gerek) ve böyle yapınca sanırım klasör benim program tarafından kullanılıyor gözüküyor ve değiştirme işlemi yapılamıyor. Ne yapmam gerekir bu durumda ?
ama dediğim gibi hata kararlı değil ki bu en çok sinir ediyor beni. aynı koşullarda bazen başarılı oluyor bazen de olmuyor.rastgele yani..

edit : koddan FOF_SILENT or FOF_NOCONFIRMATION; kısmını çıkardım böylece neden yeniden adlandırmadığını anlamak için hata mesajını göstermesini sağladım..bu hatayı veriyor :
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

1. Önce root dizini currentdir yapın
2. sonra rename edip
3. tekrar rename edilmiş yeni halini current dir yapın.

- Ama içerisinden kullanılan dosya varsa ne yaparsanız yapın o dosya kullanımını kapatmadan ismini değiştiremezsiniz.
Resim
Resim ....Resim
DelphiMania
Üye
Mesajlar: 24
Kayıt: 14 Tem 2004 05:18

Mesaj gönderen DelphiMania »

1. Önce root dizini currentdir yapın
2. sonra rename edip
3. tekrar rename edilmiş yeni halini current dir yapın.
bunu denemiştim yine sorun veriyordu ancak ilk mesajda verdiğim kodu kullanıyordum. bir de RenameFile ile dediğiniz şekilde denedim..
defalarca deneme yapmama rağmen hiç bir sorun yok gibi gözüküyor şu anda sorunsuz çalışıyor..
çok teşekkürler..
Cevapla