olduğunu Yani, belirli bir dizinenasıl silinir dosyaları
Örnek içindeki desen eşleştirme tüm dosyaları silmek, Sen SHFileOperation kullanabilirsiniz DirectoryName
içindeolduğunu Yani, belirli bir dizinenasıl silinir dosyaları
Örnek içindeki desen eşleştirme tüm dosyaları silmek, Sen SHFileOperation kullanabilirsiniz DirectoryName
içindeprocedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFiles(ExtractFilePath(ParamStr(0)),'*.jpg');
end;
procedure DeleteFiles(APath, AFileSpec: string);
var
lSearchRec:TSearchRec;
lPath:string;
begin
lPath := IncludeTrailingPathDelimiter(APath);
if FindFirst(lPath+AFileSpec,faAnyFile,lSearchRec) = 0 then
begin
try
repeat
SysUtils.DeleteFile(lPath+lSearchRec.Name);
until SysUtils.FindNext(lSearchRec) <> 0;
finally
SysUtils.FindClose(lSearchRec); // Free resources on successful find
end;
end;
end;
tüm –
Teşekkür (lsearchrec fillchar gerek yoktur). Tam olarak aradığım şey tam da bu. – volvox
* Her zaman doğru şekilde programlamak istiyorsanız FillChar yapın. Bu hiçbir şey yapamaz, ama bu iyi bir alışkanlıktır. Bir gün C gibi program yaparsanız, iyi alışkanlıklarınız olmasaydı * büyük * belaya girersiniz. Sen * her zaman * rekorun başlatılmamış olduğunu ve her zaman * belleğin her zaman 0 bayt ile ayarlanamayacağını düşünmelisin. FillChar fonksiyonunu geri getirmek, diğerlerinin kötü alışkanlıklar yerine iyi alışkanlıklarını göstermek zorundasınız. –
tüm * .jpg dosyalarını silin işlevi. SHFileOperation'ı kullanmanın güzel tarafı, dosyaları geri dönüşüm kutusuna silme seçeneğidir ve normal API animasyonlarını alırsınız, böylece kullanıcı neler olup bittiğini bilir. Downside silme Jeff'in kodundan biraz daha uzun sürecek.
Orada birkaç paket var. Bu ücretsiz sargıyı BP Yazılımından kullanıyorum. Tüm sarıcı dosyası sadece 220 satırdır ve okunması ve kullanılması kolaydır. Bunu bir bileşen olarak yüklemiyorum. Bu birimi projeme eklemek daha kolay olduğunu buldum ve sadece nesneyi gerektiği gibi oluşturun ve serbest bırakın.
Güncelleme: BP Yazılım sitesi için indirme linki artık geçerli değil. Bir older version on the Embarcadero website var.
TSHFileOp (1.3.5.1) (3 KB)
Mayıs 31, yeniden adlandırma veya geri dönüşüm-bin desteğiyle (silme, bir SHFileOperation API kopyalamak için sarıcı , hamledir 2006
TComponent) bir dosya sistemi nesnesi.
SHFileOperation için dosya adı parametresi MS DOS stili joker karakterlerini desteklemektedir. Yani böyle bileşeni kullanabilirsiniz:
FileOps := TSHFileOp.Create(self);
FileOps.FileList.Add(DirectoryName + '\*.jpg');
FileOps.HWNDHandle := self.Handle;
FileOps.Action := faDelete;
FileOps.SHOptions :=
[ofAllowUndo, ofNoConfirmation, ofFilesOnly, ofSimpleProgress];
FileOps.Execute;
Genellikle, Windows tekrar sormuyor yüzden kendim kadar hep ofNoConfirmation bayrak geçmek "Emin misin" mesajını gösterir.
her jpg dosyasını silmek istemiyorsanız veya size yürütmek çağırmadan önce FileList dize listesine yaban kartları ile tam dosya adlarını veya farklı yollar ekleyebilir birden dizinleri silmek gerekir.
İşte MSDN Page for SHFileOperation
SHFileOperation'ın Windows Vista ile başlayan IFileOperation ile değiştirildiğini unutmayın. Windows Vista'da SHFileOperation'ı sorunsuz kullanmaya devam ettim.
Delphi daha yeni sürümlerinde, muhtemelen esas vb FindFirst
, FindNext
tamamlanmakta System.IOUtils
sınıfları, kullanacağı:
procedure DeleteFilesMatchingPattern(const Directory, Pattern: string);
var FileName: string;
begin
for FileName in TDirectory.GetFiles(Directory, Pattern) do TFile.Delete(FileName);
end;
Normal bir ifade kullanabilirsiniz. Desen eşleştirmesi için biraz googling yapın, RegEx benim uzmanlık alanım değil ama cehennem kadar güçlü. –
(Dosya apis genellikle Regexes, sadece düz joker desteklemez. Tam regex kabukları ve betik dilleri için daha şeydir) –