Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
디렉토리의 수를 카운트 하는 방법
디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
디렉토리의 수를 카운트 하는 함수는 없나여?..
고수님 플리즈..
*^^*
5
COMMENTS
각시탈
•
2000.05.20 03:47
권윤진 wrote:
> 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> 디렉토리의 수를 카운트 하는 함수는 없나여?..
> 고수님 플리즈..
> *^^*
>
도움이 되시길...
항상 즐팅하세요...
// 아래 예제의 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.
출처: 김영대님 홈페이지
0
0
삭제
수정
댓글
권윤진
•
2000.05.20 05:25
각시탈님 감사드립니다..
이대로 실행을 시켜봤습니다만..
근데.. 에러가 몇개 있더구여.. 다시한번만 검토해주시면 감사하겟습니다..
제가 넘 몰라서.. 그런거 일수도 있는데..
각시탈 wrote:
> 권윤진 wrote:
> > 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> > 디렉토리의 수를 카운트 하는 함수는 없나여?..
> > 고수님 플리즈..
> > *^^*
> >
>
> 도움이 되시길...
> 항상 즐팅하세요...
>
> // 아래 예제의 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.
>
> 출처: 김영대님 홈페이지
0
0
삭제
수정
댓글
강민주
•
2000.05.20 03:44
권윤진 wrote:
> 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> 디렉토리의 수를 카운트 하는 함수는 없나여?..
> 고수님 플리즈..
> *^^*
>
안녕하세요 ^^
디렉토리 수를 구하실려면.. findfirst, findnext로 구하심 될것 같군요.
참고하세요.
var
sr: TSearchRec;
begin
FindFirst('c:*.*', faDirectory, sr);
while done = 0 do
begin
ListBox1.Items.Add(sr.name);
done := FindNext(sr);
end;
end;
그럼..20000.
0
0
삭제
수정
댓글
권윤진
•
2000.05.20 05:23
우선 감사 드립니다..
근데여.. 이렇게 하니까.. 파일도 디렉토리와 같이 카운트 되는거 같네여..
디렉토리만 세는 방법 부탁드립니다..
강민주 wrote:
> 권윤진 wrote:
> > 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> > 디렉토리의 수를 카운트 하는 함수는 없나여?..
> > 고수님 플리즈..
> > *^^*
> >
>
> 안녕하세요 ^^
> 디렉토리 수를 구하실려면.. findfirst, findnext로 구하심 될것 같군요.
> 참고하세요.
> var
> sr: TSearchRec;
> begin
> FindFirst('c:*.*', faDirectory, sr);
> while done = 0 do
> begin
> ListBox1.Items.Add(sr.name);
> done := FindNext(sr);
> end;
> end;
>
> 그럼..20000.
0
0
삭제
수정
댓글
조규춘
•
2000.05.20 07:53
권윤진 wrote:
> 우선 감사 드립니다..
> 근데여.. 이렇게 하니까.. 파일도 디렉토리와 같이 카운트 되는거 같네여..
> 디렉토리만 세는 방법 부탁드립니다..
>
>
>
> 강민주 wrote:
> > 권윤진 wrote:
> > > 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> > > 디렉토리의 수를 카운트 하는 함수는 없나여?..
> > > 고수님 플리즈..
> > > *^^*
> > >
> >
> > 안녕하세요 ^^
> > 디렉토리 수를 구하실려면.. findfirst, findnext로 구하심 될것 같군요.
> > 참고하세요.
> > var
> > sr: TSearchRec;
> > begin
> > FindFirst('c:*.*', faDirectory, sr);
> > while done = 0 do
> > begin
> > ListBox1.Items.Add(sr.name);
> > done := FindNext(sr);
> > end;
> > end;
> >
> > 그럼..20000.
예전에 한번 구현을 해본게 있어서.. 이렇게 보내니....
한번 소스 분석을 해보시기 바랍니다.
procedure Tfrmmain.SearchDirectory(dir: string);
var
Searchrec: TSearchrec;
i : integer;
st: string; // 경로를 저장할 문자열
begin
st := dir + '*.*';
FindFirst(st, faanyfile, Searchrec);
i := 0;
while i = 0 do
begin
if (Searchrec.Name = '.') or (Searchrec.Name = '..') then
begin
i := FindNext(Searchrec); // 다음 디렉토리, 화일을 찾음...
Continue;
end; // if...
if DirectoryExists(dir + '' + SearchRec.Name) then //찾은게 디렉토리면..
begin
st := dir + '' + Searchrec.Name;
ListBox1.Items.Add('D-'+st );
i := FindNext(Searchrec);
Continue;
end; // if....
// 찾은게 파일일 경우.....
st := dir + '' + Searchrec.Name;
ListBox1.Items.Add('-f'+st);
i := FindNext(Searchrec);
end; //while...
end;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
디이엘
•
2000.05.20 06:41
1
COMMENTS
/
0
LIKES
메모를 투명하게 만들기??
심동훈
•
2000.05.20 09:12
디이엘 wrote: > 안냥하세엽... > 메모 컴포넌트를 투명하게 만들어 뒤의 배경화면위에 글씨가 나타나는 ...
푸우
2000.05.20 06:02
0
COMMENTS
/
0
LIKES
[참고]날짜 월별 일수 계산
정은아
•
2000.05.20 05:22
1
COMMENTS
/
0
LIKES
SQL문에서 date처리에 대하여 ...
이진환
•
2000.05.21 11:40
정은아 wrote: > sql을 이용하는도중 날짜를 계산하면서 select를 해야하는경우가 있는데요.. > 즉 aaa라...
이선경
2000.05.20 04:59
0
COMMENTS
/
0
LIKES
access db생성시 옵션 질문...
조규춘
2000.05.20 04:41
0
COMMENTS
/
0
LIKES
했네요! 음...
델_맹
2000.05.20 03:56
0
COMMENTS
/
0
LIKES
트리거, 스토어드 프로시저,트랜잭션....은 어디에서 작업을.....
권윤진
•
2000.05.20 03:17
5
COMMENTS
/
0
LIKES
디렉토리의 수를 카운트 하는 방법
디렉토리의 수를 카운트 하는 방법을 알고 싶습니다.. 디렉토리의 수를 카운트 하는 함수는 없나여?.. 고수님 플리즈.. *^^*
각시탈
•
2000.05.20 03:47
권윤진 wrote: > 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다.. > 디렉토리의 수를 카운트 하는 ...
권윤진
•
2000.05.20 05:25
각시탈님 감사드립니다.. 이대로 실행을 시켜봤습니다만.. 근데.. 에러가 몇개 있더구여.. 다시한번만 ...
강민주
•
2000.05.20 03:44
권윤진 wrote: > 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다.. > 디렉토리의 수를 카운트 하는 ...
권윤진
•
2000.05.20 05:23
우선 감사 드립니다.. 근데여.. 이렇게 하니까.. 파일도 디렉토리와 같이 카운트 되는거 같네여.. 디렉토...
조규춘
•
2000.05.20 07:53
권윤진 wrote: > 우선 감사 드립니다.. > 근데여.. 이렇게 하니까.. 파일도 디렉토리와 같이 카운트 되는...
델_맹
•
2000.05.20 03:01
2
COMMENTS
/
0
LIKES
레코드를 추가하는 SQL문입니다. 좀 봐주세요(소스포함)
신범호
•
2000.05.20 03:19
procedure TForm3.Button1Click(Sender: TObject); var temp : string; begin temp := ''; te...
각시탈
•
2000.05.20 03:19
제가 각각의 필드에 대한 Type몰라서 제 임의대로 필드의 타입을 정했습니다. 쿼리 콤포넌트는 필요합니...
초보델멩
2000.05.20 02:44
0
COMMENTS
/
0
LIKES
[급질문] 쿼리를 나누어서 하기...
이용범
•
2000.05.20 02:30
2
COMMENTS
/
0
LIKES
************(질문)mdb(odbc)이용하는 프로그램 인스톨 버전만들때*****
각시탈
•
2000.05.20 03:01
저는 BDE의 셋팅 자체를 Ini File을 사용하고 있습니다. 인스톨 쉘드내에서 IniFile의 Section Value을 이...
이용범
•
2000.05.20 03:38
제가 초짜라 잘 이해가 안가는군요.. 너무 어려운 설명같습니다. ini 파일을 이용하지않고 installshield...
초보
•
2000.05.20 02:25
1
COMMENTS
/
0
LIKES
DBGrid 쿼리를 안쓰고 정렬하는 방법
임형호
•
2000.05.20 06:32
초보 wrote: > 퀴리를 안쓰고 DBGrid를 소스에 바로 연결을 했습니다. > 이런 경우 입력되는 값들이 번...
사발우성
•
2000.05.20 02:23
2
COMMENTS
/
0
LIKES
ㅠ.ㅠ 어떻게 하면 좋을지 몰라서리...
각시탈
•
2000.05.20 03:31
사발우성 wrote: > dbcombobox에 이름필드를 넣어야하는디 어떻게 하는건지.... > > 아무나 알면 배움...
사발우성
•
2000.05.20 04:27
각시탈 wrote: > 사발우성 wrote: > > dbcombobox 리스트에 이름을넣어야하는디 어떻게 하는건지.... > ...
아무개
•
2000.05.20 02:14
1
COMMENTS
/
0
LIKES
델파이디렉토리의 demos안의 db안에 보면..
HART
•
2000.05.20 03:01
calc필드를 사용하면 가능할 것 같은데요. 정확한것은 해봐야 하지만 cale필드는 만들는 방법은 아마 Q&...
장지용
2000.05.20 01:34
0
COMMENTS
/
0
LIKES
퀵리포트 미리보기에서 글자크기 조정하는 방법을 모르겠습니다.
박충국
•
2000.05.20 00:53
7
COMMENTS
/
0
LIKES
제발 아무리해도 안돼여..!~~
이쁘니
•
2000.05.20 01:06
박충국
•
2000.05.20 01:29
팀장
•
2000.05.20 09:34
장지용
•
2000.05.20 02:45
박충국
•
2000.05.20 03:25
이쁘니
•
2000.05.20 05:12
장지용
•
2000.05.20 03:31
델_맹
•
2000.05.20 00:41
4
COMMENTS
/
0
LIKES
DBgrid에 날짜를 자동 삽입하고 증가시키는 법좀 가르쳐주세요(빨리좀)!!!
이쁘니
•
2000.05.20 01:04
안냥하세요..오늘은 하늘이 꺼메요..비가와서..마니오네요..후후 엄..보자...엄..날짜는요 Edit1.tex...
델_맹
•
2000.05.20 03:19
넘 감사합니다 꾸~~~~뻑. 이렇게 답변을 주셔서..... *근데 DBgrid에서 바로 구현하는 방법은 없는지....
이쁘니
•
2000.05.20 05:41
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin i...
조규춘
•
2000.05.20 04:10
델_맹 wrote: > 넘 감사합니다 꾸~~~~뻑. > 이렇게 답변을 주셔서..... > *근데 DBgrid에서 바로 구...
초보자
•
2000.05.19 23:53
1
COMMENTS
/
0
LIKES
(델파이) 그래픽 필드에 그림을 넣고 싶어요..
조규춘
•
2000.05.20 04:18
초보자 wrote: > 델파이 초보자입니다. > 그림(graphic) 필드에 이미지 데이터를 넣고 싶어요. > 근데 ...
이용범
2000.05.19 23:12
0
COMMENTS
/
0
LIKES
(질문)mdb(odbc)이용하는 프로그램 인스톨 버전만들때...
올랭이
•
2000.05.19 23:06
1
COMMENTS
/
0
LIKES
query로 검색을 했는데,, 비슷한 문자열 포함..
신범호
•
2000.05.20 00:41
올랭이 wrote: > 디비는 엑세스 디비에용... > 질문의 요지는 query로 검색을 했습니다. > > que...
델_맹
2000.05.19 22:36
0
COMMENTS
/
0
LIKES
트리거로 자동증가를 한후 레코드가 지워지지 않는군요.
권윤진
2000/05/20 03:17
Views
188
Likes
0
Comments
5
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 디렉토리의 수를 카운트 하는 방법을 알고 싶습니다..
> 디렉토리의 수를 카운트 하는 함수는 없나여?..
> 고수님 플리즈..
> *^^*
>
도움이 되시길...
항상 즐팅하세요...
// 아래 예제의 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.
출처: 김영대님 홈페이지