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/FindNext は一重引用符を 2 倍にします

'New Folder''s'

TSearchRec の FindData.cFileName は次のようになります。

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

どこに問題があり、どうすれば修正できますか?

4

1 に答える 1

8

ここには問題はなく、何も修正する必要はありません。は'文字列区切り文字であり、 として表現するために単純にエスケープされ''ます。デバッガーが''文字列で表示する場合、それは単一引用符文字を表す方法です。

ドキュメントでは、このトピックについて説明しています: Character Strings

そう、

''''

単一の要素が引用符である長さ 1 の文字列です。

同じく

'New Folder''s'

文字列を定義する Delphi 文字列リテラルです

New Folder's

デバッガーは、文字列リテラルに使用されるのと同じ規則を使用して、変数の内容を表示します。

于 2012-06-11T20:56:06.810 に答える