2012-06-11 24 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

唯一需要解決的問題是你的'文件夾'名稱(雙關意圖)。 –

回答

8

這裏沒有問題,沒有什麼需要解決的。 '是字符串分隔符,只需轉義表示爲''即可。當調試器在字符串中顯示''時,這只是表示單引號字符的方式。

文檔涵蓋此主題:Character Strings

所以,

'''' 

是長度爲1的字符串,其單個元件是報價符號。

同樣

'New Folder''s' 

是一個Delphi字符串文字限定串

New Folder's 

調試器顯示了變量的使用相同的規則用於字符串文字內容。

+0

+1。 IOW,它在調試器中檢查變量時只是一個顯示問題,並且不會影響實際代碼的行爲或結果。 –

+1

應該注意到這個行爲是依賴於版本的。 D2007調試器顯示一個'''字符'''',而在XE上它是'''''(顯然D2010也是)(ansi範圍並不重要)。 –