【问题标题】:Drive letter removed from path when retrieiving sub directories检索子目录时从路径中删除驱动器号
【发布时间】:2013-02-10 19:03:19
【问题描述】:

我正在尝试在delphi中检索目录的子目录,我正在使用此功能:

procedure GetSubDirectories(const directory : string; list : TStrings) ;
 var
   sr : TSearchRec;
 begin
   try
     if FindFirst(IncludeTrailingPathDelimiter(directory) + '*.*', faDirectory, sr) < 0 then
       Exit
     else
     repeat
       if ((sr.Attr and faDirectory <> 0) AND (sr.Name <> '.') AND (sr.Name <> '..')) then
         List.Add(IncludeTrailingPathDelimiter(directory) + sr.Name) ;
     until FindNext(sr) <> 0;
   finally
     SysUtils.FindClose(sr) ;
   end;
 end;

然后我尝试了类似的方法:

procedure TForm1.FormCreate(Sender: TObject);
  var
    folders: TStringList;
  begin
    folders := TStringList.Create;
    try
      GetSubDirectories('c:\', folders);
      ShowMessage(folders.ValueFromIndex[0]);
    finally
      FreeAndNil(folders);
   end;
  end;

消息框中显示的字符串例如:“:\Program Files”。我尝试在 GetSubDirectories 过程中的 List.Add 上添加一个断点,然后 var 看起来像“C:\Program Files”。

为什么要删除消息框中的驱动器号?

【问题讨论】:

    标签: delphi delphi-7 subdirectory


    【解决方案1】:

    ValueFromIndex 要求您在TStringList 上使用键值对,您正在寻找的可能是TStringListStrings 属性,这也是该类的默认属性。

    所以你可以使用folders[0]folders.Strings[0]

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2018-06-16
    • 2021-01-30
    相关资源
    最近更新 更多