2013-04-03 87 views
0

如何檢查某個文本文件是否包含某個字符串? 我是否必須實際打開文件並使用InStr(),還是有更方便的方法來完成它?檢查文件是否包含VB6中的字符串

順便說一句,語言是Visual Basic 6.0的

+4

是的,您需要先加載文件。如果它太大而不適合內存,請將其裝入一塊。 –

+0

如果您使用嵌入代碼http://www.veign.com/code-view.php?type=app&codeid=72,請檢查此內容。 –

+0

管理(文本)文件的最簡單組件是FileSystemObject(在Microsoft Scripting Runtime中引用)。 – Arvo

回答

0

你不能沒有打開一個文件,但有(也包括打開文件),你可以使用命令替代,具體如下:

<filename> is the name of the file 
<string> is the string you want to check 

(假設你要檢查的文件是在當前目錄)

Shell("find /c "+chr(34)+"<string>"+chr(34)+" <filename> > test.txt") 

    Open "test.txt" for input as #1 
     input #1, A 
    Close #1 

    If (Right(A,3)=": 0") Then 
      Msgbox "Does not exist" 
    Else 
      Msgbox "String exists" 
    End if 

雖然這還需要打開該文件,這將是快了很多(如果該文件是巨大的)筆使用InStr()函數搜索字符串,因爲它現在檢查一個常量字符串。另外,您可以稍微更改一下shell命令以同時搜索多個文件中的文本(使用通配符),這肯定比使用循環打開所有這些文件並使用另一個循環讀取更快所有行,並在每行上使用InStr()。

+0

他問如何使用VB6做到這一點,你建議使用'find',真的嗎?你將如何檢查錯誤(例如,命令外殼程序未能創建你的'test.txt')?我也懷疑關於您的解決方案的卓越性能的說法是有根據的。我很好奇,如果「Right(A,3)=」:0「'仍然是正確的檢查,比如從右到左的語言環境。 –

+0

如果command-shell無法創建'test.txt'文件,我們可以隨時使用PathFileExists()Win32 API進行檢查;我相信在VB中打開文件,然後循環讀取文件中的每一行,然後在每行上使用InStr(),與使用「查找」相比,速度會更慢。就你提到的語言環境而言,是的,我承認這可能是一個問題。 – user1637645

相關問題