안녕하세요
질문좀 여쭙죠...^^;
어떤 파일들을 프로그램상에서 지우려고 하는데
특정이름의 화일이 아니라서 와일드 카드를 써서 지우려고
합니다.
그래서 델파이 함수를 찾다가
FindFirst란 함수를 찾아서 검색을 할 수 있다는 것을 알았는데
검색한 결과값이 F : TSearchRec에 저장된다고 설명이 나와 있는데
DeleteFile을 쓰려면 String으로 화일을 넣어야 됩니다.
어떻게 하면 원하는 파일들을 찾아 한꺼번에 지울수 있을까요..
그럼 부탁드립니다.
파일 삭제루틴은 없습니다
// 아래 예제의 Memo1 은 검사용이므로 디렉토리의 크기를 구하는
// 과정을 보고자 할때는 주석을 여시면 됩니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, FileCtrl;
type
TForm1 = class(TForm)
DirectoryListBox1: TDirectoryListBox;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function GetDirectorySize(Dir: String): Longint;
var
SearchRec: TSearchRec;
Separator: String;
DirBytes: Longint;
begin
DirBytes := 0;
if Copy(Dir, Length(Dir), 1)='' then
Separator := ''
else
Separator := '';
if FindFirst(Dir+Separator+'*.*', faAnyFile, SearchRec) = 0 then
begin
if FileExists(Dir+Separator+SearchRec.Name) then
begin
DirBytes := DirBytes + SearchRec.Size; // 현재 디렉토리의 파일 사이즈 합계
// Form1.Memo1.Lines.Add(Dir+Separator+SearchRec.Name+' - '+IntToStr(SearchRec.Size)); // 파일 리스트 출력시 사용
end
else if DirectoryExists(Dir+Separator+SearchRec.Name) then
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
DirBytes := DirBytes + GetDirectorySize(Dir+Separator+SearchRec.Name); // 재귀적 호출로 하위 디렉토리 검색
end;
end;
while FindNext(SearchRec) = 0 do
begin
if FileExists(Dir+Separator+SearchRec.Name) then
begin
DirBytes := DirBytes + SearchRec.Size;
// Form1.Memo1.Lines.Add(Dir+Separator+SearchRec.Name+' - '+IntToStr(SearchRec.Size));
end
else if DirectoryExists(Dir+Separator+SearchRec.Name) then
begin
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
begin
DirBytes := DirBytes + GetDirectorySize(Dir+Separator+SearchRec.Name);
end;
end;
end;
end;
FindClose(SearchRec);
Result := DirBytes;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Memo1.Clear;
ShowMessage(IntToStr(GetDirectorySize(DirectoryListBox1.Directory)));
end;
end.