2

我在 Windows 7 上使用 Delphi 2010,并且在递归搜索目录时遇到单引号加倍的问题。

这是我搜索目录的代码。

  if FindFirst(aPath + '*', faDirectory, sr) = 0 then
    try
      repeat
        if  (sr.Name <> '.') and (sr.Name <> '..') then
          if (sr.Attr and faDirectory) = faDirectory then
            SearchFolderEx(aPath + sr.Name + '\', aSearchMasks);

      until FindNext(sr) <> 0;
    finally
      FindClose(sr);
    end;

现在使用这样的路径(从“C:\New folder\”开始)

C:\New folder\New Folder's\New Text Document.txt

FindFirst/FindeNext 将单引号加倍

'New Folder''s'

TSearchRec 中的 FindData.cFileName 看起来像这样

('N', 'e', 'w', ' ', 'F', 'o', 'l', 'd', 'e', 'r', '''', 's', #0, #0, ...)

问题可能出在哪里,我该如何解决?

4

1 回答 1

8

这里没有问题,也不需要解决任何问题。'是字符串分隔符,只是为了表示为而转义''。当调试器''以字符串显示您时,这只是表示单引号字符的方式。

文档在此处涵盖此主题:字符串

所以,

''''

是一个长度为 1 的字符串,其单个元素是引号符号。

同样地

'New Folder''s'

是定义字符串的 Delphi 字符串文字

New Folder's

调试器使用与字符串文字相同的规则向您显示变量的内容。

于 2012-06-11T20:56:06.810 回答