procedure Tfrmfolder.SpeedButton5Click(Sender: TObject);
var SR: TSearchRec;
nRowCount : Integer;
FileAttrs , nResult : Integer;
sPath : String;
begin
FileAttrs := faDirectory;
For nRowCount := 0 To StringGrid2.RowCount -1 Do
Begin
StringGrid2.Cells[0,nRowCount] := '';
End;
StringGrid2.RowCount := 1 ;
StringGrid2.Row := 0;
with StringGrid2 do
begin
sPath := Edit1.Text + '\*.*';
nResult := FindFirst( sPath , faDirectory , sr);
if nResult = 0 then
begin
repeat
if faDirectory = sr.Attr then
begin
Cells[0,Row] := sr.Name ;
StringGrid2.RowCount := StringGrid2.RowCount + 1;
Row := Row + 1;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
위와 같이 작성하면~
해당 디렉토리 아래 디렉토리만 나오네요~
전 최하위 디렉토리를 알고 싶거덩요~
예를 들면
A 라는 경로에
A------B11------B111---------B1111
B2222
B3333
C111--------C1111
C2222
C3333
C11-----C111----------C1111
C2222
제가 찾고자 하는 것은
c:\A\b11\b111\b1111
c:\A\b11\b111\b2222
c:\A\b11\b111\b3333
c:\A\b11\c111\c1111
c:\A\b11\c111\c2222
c:\A\b11\c111\c3333
c:\A\c11\c111\c1111
c:\A\c11\c111\c2222
위와 같이 끝에 폴더 및 경로를 알고 싶습니당
고수님 플리즈 ㅠ.ㅠ;
방법론적인게 아니고~
셀트리뷰 컴포넌트를 사용해도 하위 디렉토리를 못 찾고
특정 디렉토리 에 바로 아래 디렉토리만 찾아서~
질문 하는 것입니다.
로드 카운터를 사용해도~ 전체적인 카운터라서~ 설정이 잘 안되는 문제가 있었구요~
델7 제공하는 컴포넌트로 구현할려니 잘 안되서 질문 하는 것입니다.
이런거 까지 라고 말씀 하시는뎅 이런거 가 어떤건가요~
질문란에 궁금해서 물어 보는건뎅 잘못 된건가요~
이것 저것 해보고 안되니깐 물어 보는건뎅~
답변 달아 주실때 가려가면서 해주세요~
저두 초보지만 담처럼 재귀호출 이용하면 될 듯 한데요...
간단하게 맨들어 본건데 더 좋은 방법 있으신 분은 말씀해 주세요...
----------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
SR: TSearchRec;
nRowCount : Integer;
FileAttrs , nResult : Integer;
sPath : String;
isString : String;
begin
if Trim(Edit1.Text) = '' then
exit;
FileAttrs := faDirectory;
For nRowCount := 1 To StringGrid1.RowCount - 1 Do
Begin
StringGrid1.Cells[1,nRowCount] := '';
End;
StringGrid1.RowCount := 2 ;
StringGrid1.Row := 1;
with StringGrid1 do
begin
sPath := Edit1.Text + '\*.*';
nResult := FindFirst(sPath , faDirectory , sr);
if nResult = 0 then
begin
repeat
if faDirectory = sr.Attr then
begin
if (sr.Name = '.') or (sr.Name = '..') then
continue;
isString := fn_GetLastDirectory(Edit1.Text + sr.Name);
if isString <> '' then
begin
Cells[1,Row] := isString;
StringGrid1.RowCount := StringGrid1.RowCount + 1;
Row := Row + 1;
end;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
end;
function TForm1.fn_GetLastDirectory(inPath: String): String;
var
SR: TSearchRec;
nRowCount : Integer;
FileAttrs , nResult : Integer;
sPath : String;
isString : String;
iCnt : integer;
begin
Result := '';
iCnt := 0;
FileAttrs := faDirectory;
sPath := inPath + '\*.*';
nResult := FindFirst(sPath, faDirectory, sr);
if nResult = 0 then
begin
repeat
if faDirectory = sr.Attr then
begin
if (sr.Name = '.') or (sr.Name = '..') then
continue;
isString := fn_GetLastDirectory(inPath + '\' + sr.Name);
with StringGrid1 do
begin
if isString <> '' then
begin
Cells[1,Row] := isString;
StringGrid1.RowCount := StringGrid1.RowCount + 1;
Row := Row + 1;
inc(iCnt);
end;
end;
end;
until FindNext(sr) <> 0;
end;
if (iCnt = 0) then
Result := inPath;
FindClose(sr);
end;
지금 질문하는건 개발 방법론적인거 같은데요...
잘 생각해보고 하세요.
이런거 까지 물어보게 되면 개발 못합니다.