Q&A

  • 폴더안에 파일들을 순차적으로 불러오는 방법을 알고 싶습니다.
폴더안에 여러개의 엑셀파일이 있습니다.(1.xls, 2.xls, 3.xls ...)
함수를 구현하여 각각의 파일 이름을 불러옵니다.
불러온 파일들을 open 하여 데이타를 사용할 것입니다.
그리고 나서 파일 이름을 리스트에 뿌려 줄려고 합니다.

폴더안에 파일들을 순차적으로 불러오는 방법을 알고 싶습니다.

답변 부탁드립니다.  꾸벅.
2  COMMENTS
  • Profile
    김동원 2008.01.16 02:33

    function FindFileList(AFileList: TStrings; ARootDir: string; ARecursive: Boolean; AExt: string): Integer;
    var
      hFind: THandle;
      wfd  : TWin32FindData;
      bContinue: Boolean;
    begin
      if ARootDir[Length(ARootDir)] <> '\\' then
        ARootDir := ARootDir + '\\';

      hFind := Windows.FindFirstFile(PChar(ARootDir + '*.*'), wfd);
      bContinue := (hFind <> INVALID_HANDLE_VALUE);
      while bContinue do
      begin
        if wfd.cFileName[0] <> '.' then
        begin
          if ARecursive and ((wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then
          begin
            FindFileList(AFileList, ARootDir + wfd.cFileName + '\\', ARecursive, AExt);
          end
          else
          begin
            if (AExt = '.*') or (ExtractFileExt(wfd.cFileName) = AExt) then
              AFileList.Add(ARootDir + wfd.cFileName);
          end;
        end;

        bContinue := Windows.FindNextFile(hFind, wfd);
      end;

      Windows.FindClose(hFind);
      Result := AFileList.Count;
    end;

    그럴리 없겠지만 혹시 Sorting되어있지 않은 리스트가 있을경우 함수 호출후 AFileList를 Sort시켜주세요.
    TStringList.Sort등을 이용하시면 됩니다...
    도움이 되셨길 바랍니다.

  • Profile
    엠피쓰리 2008.01.16 19:10
    폴더에 있는 파일들을 하나씩 하나씩 불러오는 루틴을 잘 모르겠습니다.
    함수를 어떻게 사용하는지도 잘 모르겠습니다.
    일단 파일을 불러오면 파일명을 이용해서 핸들링은 가능하겠는데 그 전과정이 이해가
    잘 안됩니다..
    쉬운 설명좀 부탁드립니다.