我在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)
哪里可能是问题,我该如何解决?
这里没有问题,没有什么需要修复的.这'是字符串分隔符,只是转义为表示为''.当调试器''在字符串中显示时,这就是表示单引号字符的方式.
该文档在此处介绍了此主题:字符串.
所以,
''''
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)
调试器使用与字符串文字相同的规则向您显示变量的内容.