我有一個ini文件在內存中的情況(在一個字符串變量中),我想從它讀取值,而無需將ini文件數據寫入磁盤。有沒有辦法將.ini文件讀入內存,然後從中讀取特定值?
更新:這是我不想寫入HD的數據。我從Web服務器將它下載到內存中,然後獲取一些數據。
在VB6中有沒有辦法做到這一點?也許用Win API調用?
我有一個ini文件在內存中的情況(在一個字符串變量中),我想從它讀取值,而無需將ini文件數據寫入磁盤。有沒有辦法將.ini文件讀入內存,然後從中讀取特定值?
更新:這是我不想寫入HD的數據。我從Web服務器將它下載到內存中,然後獲取一些數據。
在VB6中有沒有辦法做到這一點?也許用Win API調用?
粘土,
看看這篇文章在DevX.com
Read/Write INI without using API
這應該讓你在一個很好的方向指向。這些模塊有點髒,在這一點上,需要存儲INI的路徑。相反,只需修改模塊以直接使用您的字符串,您應該會收到所需的結果。讓我知道這是如何解決你的。
ini文件將存儲在硬盤上。如果你想保存在註冊表中,而不是(這應該被添加到註冊表文件也是如此),你可以使用這些功能:
SaveSetting
GetSetting
如果你不想把它保存在磁盤上,我認爲這可能是困難使用任何特定的API調用。但是,如果它是一個ini文件,它應該是結構化的格式,爲什麼不直接循環直到你想要的部分,然後從它讀取你想要的值。
這是一個漫長的時間,但它應該是這樣的,我認爲:
只是Split
它換行符得到線組成的數組,然後每個部分應該按照一定格式的開始和在那裏的每一行你檢查它是否包含一個=我認爲,如果是這樣的話,那麼第一個=左邊的所有東西都是該值的名稱,它右邊的所有內容都是值。
聲明兩個Windows API函數進口
Public Declare Function GetPrivateProfileStringA Lib "kernel32.dll" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Declare Function WritePrivateProfileStringA Lib "kernel32.dll" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
對於閱讀
sReturn = Space(255)
sReturn = Left(sReturn, GetPrivateProfileStringA(header, key, defaultReturn, sReturn, 255, filePath))
對於書面方式
WritePrivateProfileStringA header, key, Datum, filePath
記住的INI文件的結構是
[header]
key=data
是的,在VB6中幾乎所有的東西都是可能的。但我不認爲有任何Windows API來做到這一點。
如果你找不到一個圖書館來做到這一點,你將不得不爲自己編碼。如果您必須自己編寫代碼,請參閱您是否可以找到一些可用於ini文件的現有代碼,以瞭解如何使用ini文件。
有兩個用於處理INI文件的窗口API函數,GetPrivateProfileStringA和WritePrivateProfileStringA。 – 2010-05-21 21:12:50
那些需要一個文件。 – Echo 2010-05-22 05:29:13
Carolos,那些從/到FILES而不是從內部字符串讀取/寫入的。 – 2010-05-21 22:55:46