掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
指定したフォルダー以下のサイズを取得するには (ID:24827)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
再帰呼び出しという手法を使います。 unit GetFilesCountMain; interface uses Windows, .... type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private 宣言 } Count: Integer; procedure GetFilesCount(const Path: String); public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Folder: String; begin Folder := Get対象FolderName; Count := 0; GetFilesCount(Folder); Label1.Caption := IntToStr(Count); end; procedure TForm1.GetFilesCount(const Path: String); var Res: Integer; SearchRec: TSearchRec; Attri: Integer; S: String; begin // Pathの最後が'\'でない場合、'\'を加える = 重要 // IncludeTrailingPathDelimiter()がないVersionでは // IncludeTrailingBackslash()を使用 // それもないversionでは、 // if not IsPathDelimiter() then S := Path + '\' S := IncludeTrailingPathDelimiter(Path); Res := FindFirst(S + '*.*', faAnyFile, SearchRec); try try while Res = 0 do begin Attri := (SearchRec.Attr) and faDirectory; if (Attri <> faDirectory) then Inc(Count) else if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then GetFilesCount(S + SearchRec.Name); // 再帰呼び出し Res := FindNext(SearchRec); end; except Showmessage('ファイル数の取得に失敗しました。'); end; finally FindClose(SearchRec); end; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.