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