2011-09-07 94 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。你不应该使用它。