2011-09-07 96 views
1

我在C++程序中遇到了術語GetPrivateProfileString。任何人都可以給我一個使用這個函數的簡單解釋嗎?GetPrivateProfileString的目的是什麼?

我的網頁上的代碼是:

GetPrivateProfileString("files", "directory", "/mediadb/files/", directory, os.path.getsize(directory), "apache") 
+5

一個C++ ***腳本***? –

+8

在您最喜歡的搜索引擎中鍵入該詞,您將獲得官方文檔_fast_。 – Mat

+2

所有關閉這個問題的人都被誤解了問題的範圍。這不是關於隨機代碼庫中的函數。這個函數是一個微軟的Windows API,與下面的論點相反,這個API在很多遺留代碼中都很常見。所以,這個問題實際上很可能會在未來有訪問者。 – PoP

回答

10

GetPrivateProfileString()從.ini文件中讀取值。

回想起來,在16位Windows的日子裏,它是讀寫應用程序配置數據的方式。那時應用程序將其配置存儲在一個名爲win.ini的系統目錄中的共享.ini文件中。艱難時期!

要從win.ini讀取,請撥打GetProfileString()GetPrivateProfileString()中的私人表明,這個奇妙的功能允許您訪問除win.ini以外的.ini文件,即私人應用程序。如果我記得正確(而且我的記憶很朦朧),大多數應用程序在使用win.ini進行數年和數年之後才正式提出這樣做​​。

它恰巧GetPrivateProfileString()是一個令人難以置信的皺紋野獸,具有可怕的性能特點和難以理解的古怪。我親自避免它像瘟疫一樣,如果我必須處理.ini文件,我使用定製的代碼來執行此操作。

Raymond Chen有一個不錯的article關於爲什麼.ini文件被棄用,以支持註冊表。

+3

+1不只是從MSDN複製粘貼。但我認爲'GetPrivateProfileString()'實際上是從應用程序的私有.ini文件中讀取的。你所說的那個從普通的Win.ini文件讀取的是'GetProfileString()'。 – Praetorian

+1

@Praetorian謝謝你。我的記憶很朦朧。很久以前了!我已經更新了答案,希望它更準確。 –

+1

+1非常感謝您的時間和耐心@大衛Heffernan! – smurf

1

從MSDN:

檢索從指定的節中的字符串初始化 文件。

只是爲了與16位 基於Windows的應用程序的兼容性提供此功能。應用程序應將初始化 信息存儲在註冊表中。

語法

DWORD WINAPI GetPrivateProfileString(
    __in LPCTSTR lpAppName, 
    __in LPCTSTR lpKeyName, 
    __in LPCTSTR lpDefault, 
    __out LPTSTR lpReturnedString, 
    __in DWORD nSize, 
    __in LPCTSTR lpFileName 
); 
+2

這不是太大的幫助。什麼是初始化文件?我認爲smurf需要該級別的幫助,而不是MSDN的複製/粘貼。 –

1

這是一個從.ini文件for reading配置信息。這是一個老的win16 API。你不應該使用它。