使用FindFirst/FindeNext搜索时,Delphi会将单引号加倍

use*_*630 2 delphi path find

我在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;
Run Code Online (Sandbox Code Playgroud)

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

C:\New folder\New Folder's\New Text Document.txt
Run Code Online (Sandbox Code Playgroud)

FindFirst/FindeNext将单引号加倍

'New Folder''s'
Run Code Online (Sandbox Code Playgroud)

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

('N', 'e', 'w', ' ', 'F', 'o', 'l', 'd', 'e', 'r', '''', 's', #0, #0, ...)
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*nan 8

这里没有问题,没有什么需要修复的.这'是字符串分隔符,只是转义为表示为''.当调试器''在字符串中显示时,这就是表示单引号字符的方式.

该文档在此处介绍了此主题:字符串.

所以,

''''
Run Code Online (Sandbox Code Playgroud)

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

同样

'New Folder''s'
Run Code Online (Sandbox Code Playgroud)

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

New Folder's
Run Code Online (Sandbox Code Playgroud)

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