2012-06-11 6 views
2

Windows 7에서 Delphi 2010을 사용하고 있고, 반복적으로 디렉토리를 검색 할 때 작은 따옴표가 두 배로 나오는 문제가 있습니다.Delphi는 FindFirst/FindeNext로 검색하는 동안 작은 따옴표를 두 배로 만듭니다.

이것은 내 디렉토리를 검색하는 코드입니다. 이 같은 경로 이제

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 : \ 새 폴더 \")

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

를 FindFirst/FindeNext는 작은 따옴표를 두 배로을

'New Folder''s' 

및 FindData.cFileName TSearchRec의 모습은 다음과 같습니다.

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

어디서 문제가 될 수 있으며 어떻게 해결할 수 있습니까?

+0

해결해야 할 유일한 문제는'folder's' 이름 (말장난 의도)입니다. –

답변

8

여기에 아무런 문제가 없으며 수정할 필요가 없습니다. '은 문자열 분리 문자이며 ''과 같이 단순히 이스케이프 처리됩니다. 디버거가 문자열에 ''을 표시하면 작은 따옴표 문자를 나타낼 수 있습니다.

문서는 여기에서이 주제를 다룹니다. Character Strings.

그래서,

'''' 

누구의 단일 요소 인용 상징 길이가 1 인 문자열입니다.

마찬가지로
'New Folder''s' 

디버거 당신 문자열 리터럴에 사용되는 것과 같은 규칙을 사용하는 변수의 내용을 표시 문자열

New Folder's 

을 정의 리터럴 델파이 문자열이다.

+0

+1. IOW, 디버거에서 변수를 검사 할 때 표시 문제 일 뿐이므로 실제 코드의 동작이나 결과에는 영향을주지 않습니다. –

+1

이 동작은 버전에 따라 다릅니다. D2007 디버거는 하나의'''문자를'' '''로 표시하지만 XE에서는'' '' ''(분명히 D2010)입니다 (ansi-wide는 중요하지 않습니다). –

관련 문제