특정한 디렉토리의 서브 디렉토리와 화일 그리고 각 디렉토리와 화일의
날짜,시간, 속성,크기 등을 알아내는 방법을 알고 싶습니다.
예를 들어 저는 FindFirst, FindNext 두 함수를 사용하여 디렉토리와
화일 그리고 그 각각의 속성을 알아내는데 까지는 성공했는데요
한 가지 이상한 현상이 발생하더군요 저는 델파이의 버그라고 밖에
생각할 수 밖에 없었는데요 ...
디렉토리마다 결과 값이 맞는 경우가 있는가 하면 저처럼 Windows
디렉토리로 가서 출력해보면 몇몇 서브 디렉토리는 보이지도 않고
또한 화일도 보이지 않는(출력되지 않음) 것이 생기더군요
그런데 다른 디렉토리로 가서 테스트 해보면 정상적으로 되고 말입니다.
또한 델파이의 DirectoryListBox, DirectoryOutline 라는 컴포넌트가 있는데요
둘다 이상한 버그가 있더군요 앞에서도 말씀드렸지만 다른 모든 디렉토리는
정상적으로 출력이 되는데 Windows디렉토리에 있는 서브디렉토리만
나오는게 있는가 하면, 실제로는 디렉토리가 있는데 보이지않는(출력되지않는)
디렉토리도 있더군요(참고로 저는 델파이 3.0을 사용하고 있습니다.)
다시 본론으로 돌아가서요 제가 서브디렉토리와 화일을 알아내기 위해
FindFirst, FindNext을 사용한 방법을 아래에 적었습니다.
어떤 부분이 문제인지 아니면 FindFirst, FindNext를 사용하는 방법외에
다른 더좋은 방법은 없는지 알고 싶습니다. 그럼 좋은 하루 되십시오.
==================================================================
with DirectoryListBox1 do //경로끝에 '/'가 없으면 추가
begin
if (Directory[length(Directory)] <> '\') then
PathStr := Directory + '\*.*'
else PathStr := Directory + '*.*';
end;
Found := FindFirst(PathStr, faAnyfile, SearchRec);
while Found = 0 do
begin
if Length(SearchRec.FindData.cFileName) > 12 then
ListBox.Items.Add(SearchRec.FindData.cAlternateFileName)
else ListBox.Items.Add(SearchRec.FindData.cFileName);
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
|