答えて
procedure 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;
(lsearchrecを埋めておく必要はありません) –
ありがとうございます。これはまさに私が探しているものです。 – volvox
*正しくプログラミングしたい場合は、必ず* FillCharを実行してください。これは何もしないかもしれませんが、これは良い習慣です。ある日、もしあなたが良い習慣を持っていなければ、あなたは*大きな*トラブルに陥るでしょう。あなたは常にレコードが初期化されていないと仮定しなければならず、いつもメモリが0バイトで設定されているとは限りません。あなたは本当に悪いものの代わりに他の良い習慣を示すために、FillChar関数を戻さなければなりません。 –
をすべての* .jpgファイルを削除します。関数。 SHFileOperationの使い方については、ごみ箱にファイルを削除するオプションがあり、通常のAPIアニメーションが表示されるので、ユーザーは何が起こっているのかを知ることができます。欠点は、削除がJeffのコードよりも少し時間がかかることです。
いくつかのラッパーがあります。私はBP Softwareのこのフリーラッパーを使用します。ラッパーファイル全体はわずか220行で、読みやすく使いやすくなっています。私はこれをコンポーネントとしてインストールしません。私は、私のプロジェクトにこのユニットを追加し、必要に応じてオブジェクトを作成して解放するほうが簡単だと分かりました。
更新:BPソフトウェアサイトのダウンロードリンクはもう有効ではありません。 older version on the Embarcadero websiteがあります。
TSHFileOp(1.3.5.1)(3 KB)
月 31、2006 ごみ箱をサポートする、 動きをコピー、名前変更、または削除するSHFileOperation APIのラッパー (ある
TComponentは)ファイルシステム オブジェクト。
SHFileOperationのファイル名パラメータは、MS DOSスタイルのワイルドカードをサポートします。ですから、このようにコンポーネントを使用することができます:
FileOps := TSHFileOp.Create(self);
FileOps.FileList.Add(DirectoryName + '\*.jpg');
FileOps.HWNDHandle := self.Handle;
FileOps.Action := faDelete;
FileOps.SHOptions :=
[ofAllowUndo, ofNoConfirmation, ofFilesOnly, ofSimpleProgress];
FileOps.Execute;
を私は通常、Windowsが再び尋ねないように自分自身がそう、私はいつもofNoConfirmationフラグを渡すメッセージ「あなたはよろしいです」と表示します。
すべてのjpgファイルを削除したくない場合や、複数のディレクトリから削除する必要がある場合は、executeを呼び出す前にFileList文字列リストに完全なファイル名または別のパスを追加できます。
ここではMSDN Page for SHFileOperation
SHFileOperationはWindows Vistaから始まるIFileOperationに置き換えられています。私は問題なくWindows Vista上でSHFileOperationを使い続けました。デルファイの最近のバージョンで
、あなたはおそらく、System.IOUtils
のクラスを使用することになり、実質的にFindFirst
、FindNext
などをラップしている:
procedure DeleteFilesMatchingPattern(const Directory, Pattern: string);
var FileName: string;
begin
for FileName in TDirectory.GetFiles(Directory, Pattern) do TFile.Delete(FileName);
end;
- 1. NERDTree - ファイルの削除方法
- 2. joomla2.5でファイルを削除する方法
- 3. レコードが削除されたときにファイルを削除する方法は?
- 4. S3で古いファイルを削除または削除する方法は?
- 5. Visual Studioでファイルを削除する方法イベントビルドをビルドする
- 6. Macでダウンロード中にファイルを削除する方法を停止する方法
- 7. アルゴリズム:他のすべてのファイルを削除する方法
- 8. Fortran:文字からファイル拡張子を削除する方法
- 9. ファイルを再帰的に削除する方法
- 10. 大きなファイルを削除する方法2 git commit back?
- 11. Python - ファイルから列を削除する方法
- 12. zipファイルのフォルダパスを削除する方法
- 13. ファイルをディスクに保存してJavaで削除する方法
- 14. リモートリポジトリのファイルを削除する方法は?
- 15. パスを削除してファイル名を取得する方法
- 16. JavaのXMLファイルからBOMを削除する方法
- 17. 削除されたファイルを返却する方法
- 18. Javaでタブ付きの列csvファイルを削除する方法
- 19. csvファイルの行(NOT列)を削除する方法
- 20. QtCreatorプロジェクトからファイルを削除する方法
- 21. アプリケーションの実行中にファイルを削除する方法
- 22. Javaでファイルを安全に削除する方法
- 23. ファイルMFCのReadonly属性を削除する方法
- 24. fortranコードからファイルを削除する方法は?
- 25. PerlとXML :: Smart - XMLファイルからノードを削除する方法
- 26. プログラムで実際にファイルを削除する方法
- 27. ファイルを強制的に削除する方法は?
- 28. installshield 2010でインストール中にファイルを削除する方法
- 29. bashのファイルから文字列を削除する方法
- 30. Git - 1つのブランチからファイルを削除する方法
あなたは正規表現を使用することができます。パターンマッチングのためにグーグルグーグルをしてください、RegExは私の専門ではありませんが、彼らは地獄のように強力です。 –
(ファイルapisは通常、正規表現をサポートしていません。プレーンワイルドカードです。シェル正規表現やスクリプト言語の場合は完全正規表現です) –