用FindFirst,FindNext不是更好吗?

解决方案 »

  1.   

    Procedure Get_Directory(path:string);
    var
     FindFileData     : TWin32FindData;
     SearchHandle     : THandle;
     folder,files     : WideString;
     temp             : String;
    begin
      SetCurrentDirectory(PChar(path));
      searchhandle:=findfirstfile('*.*',findfiledata);
      if (SearchHandle <> INVALID_HANDLE_VALUE) then
      repeat
        if ((findfiledata.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)<>0) then
           begin
             temp:=findfiledata.cFileName;
             if ((temp<>('.')) and (temp<>('..'))) then
             folder:=folder+findfiledata.cFileName+'\';
           end   else
           begin
             files:=files+findfiledata.cFileName+'/';
           end;  until (FindNextFile(SearchHandle,FindFileData) = FALSE) else begin
        files:='无';
        folder:='无'
      end;
      Windows.FindClose(SearchHandle);end;
      

  2.   

    请大家看清楚我的问题,要在使用FIlesystemobject 的大前提下,你的方法
    可能是有效的,但我并不需要。我只要Filesystemobject 对象怎样
    访问一个目录下的所有目录和文件
      

  3.   

    没有人会吗?
    这个 olevariant 只能用字符吗?
    我可不可以用 integer代替啊,
      

  4.   

    为什么不可以啊?试试这个:
    var
      dvs: Drives;
      dv: Drive;for i := 0 to dvs.Count - 1 do
    begin
      dv := dvs.Item[i];
      // do your things;
    end;注意:我参考了MSDN,写了上述代码,具体细节也许会有出入。
      

  5.   

    不行,循环驱动器我可以实现,但是循环目录
    for i:=1 to Fld.SubFolders.Count do
      begin
        fld.subfolders.item[这个参数是olevariant].name
      end;
    我用fld.subfolders.item[i].name 包参数错误,这个参数怎么可以
    和i结合起来用,或还有什么办法,我不要把哪个控件拖过来隐藏起来用
      

  6.   

    应该都是一样的。在VB中都可以用foreach来读取每个Item。
      

  7.   

    试试这个语句:
    for i := 0 to fid.subflders.count -1  do
      fid.subfolders.item[i].name
      

  8.   

    你的答复和我开始的留言一样啊,不幸如果
    驱动器是'C;'那个ITEM['windows']就不会报错啦
    嗬嗬,还有别的办法可以解决吗?