writeprivateprofilestring写入失败(c++写入ini文件 WritePrivateProfileString函数参数错误,求大神,我用的是控制台vs2015)

本文目录
- c++写入ini文件 WritePrivateProfileString函数参数错误,求大神,我用的是控制台vs2015
- ini文件WritePrivateProfileString无法写入,为什么
- VB 日期写入 ini 文件
- VB读写配置文件问题
- vs 2013 下 mfc 程序 WritePrivateProfileString 写入 ini文件 ,ini 文件 内容是0kb 怎么回事
- VB WritePrivateProfileString问题
- WritePrivateProfileString的郁闷问题
- GetPrivateProfileString读取失败
- [DllImport(“kernel32“)] WritePrivateProfileString
c++写入ini文件 WritePrivateProfileString函数参数错误,求大神,我用的是控制台vs2015
还是好好看看 ini文件相关操作的API函数说明吧:
将信息写入.INI文件中
1.所用的WINAPI函数原型为:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
其中各参数的意义
LPCTSTR lpAppName 是INI文件中的一个字段名.
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名,如果没有指定完整路径名,则会在windows目录(默认)查找文件。如果文件没有找到,则函数会在windows目录创建它。
2.具体使用方法:设现有一名学生,需把他的姓名和年龄写入 c:\stud\student.ini 文件中.
CString strName,strTemp;
int nAge;
strName="张三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");
此时c:\stud\student.ini文件中的内容如下:
Name=张三
3.要将学生的年龄保存下来,只需将整型的值变为字符型即可:
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");
将信息从INI文件中读入程序中的变量
1.所用的WINAPI函数原型为:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各参数的意义
前二个参数与 WritePrivateProfileString中的意义一样.
lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.
lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.
nSize : 目的缓存器的大小.
lpFileName : 是完整的INI文件名.
2.具体使用方法:现要将上一步中写入的学生的信息读入程序中.
CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");
执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".
注意:如果在读入的ini文件不存在,则按默认值生成相应的ini文件
ini文件WritePrivateProfileString无法写入,为什么
配置文件中经常用到ini文件,在VC中其函数分别为:
写入.ini文件:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名可以有很多个节名
LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
LPCTSTR lpString, // 键值,也就是数据
LPCTSTR lpFileName // INI文件的路径
);
读取.ini文件:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, // INI文件中的一个字段名可以有很多个节名
LPCTSTR lpKeyName, // lpAppName 下的一个键名,也就是里面具体的变量名
LPCTSTR lpDefault, // 如果lpReturnedString为空,则把个变量赋给lpReturnedString
LPTSTR lpReturnedString, // 存放键值的指针变量,用于接收INI文件中键值(数据)的接收缓冲区
DWORD nSize, // lpReturnedString的缓冲区大小
LPCTSTR lpFileName // INI文件的路径
VB 日期写入 ini 文件
dtpicker1.value的类型是什么,与WritePrivateProfileString函数声明中对应的类型(一般都是String)相同了没,如果没有,可以试着用CStr函数转换一下类型。
修改后的代码如下(仅共参考):
aa = WritePrivateProfileString("config", "dtpicker1", CStr(dtpicker1.value), "F:\123.ini")
VB读写配置文件问题
’apiload 定义
Public Declare Function WritePrivateProfileString Lib
"kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName
As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal
lpFileName As String) As Long
//api C 定义
BOOL WINAPI WritePrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpString,
__in LPCTSTR lpFileName
);
看一下你的声明是否正确,不行就把几个any类型全改为string,因为这个API参数的C定义就是字符串的.
我以前用这个API是没有问题的.
vs 2013 下 mfc 程序 WritePrivateProfileString 写入 ini文件 ,ini 文件 内容是0kb 怎么回事
配置文件中的结构
ownport = 8853
WritePrivateProfileString(sysparam, ownport , str, gsProfileNameD);第三个参数是内容,第四个是配置文件的路径+文件名
VB WritePrivateProfileString问题
我测试没问题
是不是提示 子过程或函数未定义
这是因为 WritePrivateProfileString 是API函数
把下面
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
加到源代码最前面 就可以了
WritePrivateProfileString的郁闷问题
修改一下,s1,s2在没有指明变量类型的时候默认为Variant类型,WritePrivateProfileString的第二和第三个参数需要传递String类变量,你传递使用Variant类型当然就不兼容啦
提供一个我使用多年的函数
其中lpFileName 参数传递一次以后可以省略,就和dir函数那样
用法:
WPPFS "a1", "b1", "v1", "E:\1.ini"
WPPFS "a2", "b2", "v2"
WPPFS "a3", "b3", "v3"
Public Static Function WPPFS(AppName As String, KeyName As String, Value As String, Optional ByVal lpFileName As String) As String
Dim f As String
If lpFileName 《》 "" Then f = lpFileName
WPPFS = WritePrivateProfileString(AppName, KeyName, Value, f)
End Function
觉得回答得好就再加点分吧,谢谢!
GetPrivateProfileString读取失败
Visual Basic 使用API函数读取配置文件可以这样做:
首先在新建工程中添加一个模块。然后将下方的代码复制到新建的模块中:
Option Explicit
Private Declare Function GetPrivateProfileString _
Lib "kernel32" Alias _
"GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String _
) As Long
Private Declare Function WritePrivateProfileString _
Lib "kernel32" Alias _
"WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As String, _
ByVal lpFileName As String _
) As Long
Public Function ReadInitialData(ByVal InitialFile As String, ByVal ActionHead As String, ByVal BodyKey As String, Optional ByVal DefaultValue As String = vbNullString) As String
’读取INI文件
’InitialFile - INI 文件的路径
’ActionHead - INI 文件的读取头,即带有 ,ActionHead=MAC )
’BodyKey - INI 文件的读取躯干,即读取头下面的子字符串
’DefaultValue - 可选参数,当读取一个字串失败时,该值即为返回值。
Dim strBuffer As String
Dim lpRet As Long
strBuffer = Space$(255)
lpRet = GetPrivateProfileString(ActionHead, BodyKey, vbNullString, strBuffer, 255, InitialFile)
If lpRet = 0 Then
ReadInitialData = DefaultValue
Else
ReadInitialData = Left$(strBuffer, lpRet)
End If
End Function
Public Sub WriteInitialData(ByVal InitialFile As String, ByVal ActionHead As String, ByVal BodyKey As String, ByVal KeyValue As String)
’写INI文件
’InitialFile - INI 文件的路径
’ActionHead - INI 文件的读取头,即带有 ,ActionHead=MAC )
’BodyKey - INI 文件的读取躯干,即读取头下面的子字符串
’KeyValue - 写入的值
Call WritePrivateProfileString(ActionHead, BodyKey, KeyValue, InitialFile)
End Sub
调用的方法是:
【写入INI文件】:Call WriteInitialData(“D:\Test.ini", "Config", "Copy", "这里是写入的内容")
’// 接下来将会在D盘中创建一个 Test.ini 文件,然后写入以上内容,您可以打开这个INI文件看一下是什么结构的。。。
【读取INI文件】:MsgBox ReadInitialData(D:\Test.ini, "Config", "Copy", "如果读取失败将会引用这个值")
’// OK !~ 以上模块在 Windows XP 和 WIndows 7 上均调试成功!~祝您好运。。。出自《绝影神话》
[DllImport(“kernel32“)] WritePrivateProfileString
int Internal;
int InternalHigh;
int Offset;
int OffSetHigh;
int hEvent;
}
private static extern int CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
private static extern bool WriteFile(int hFile, byte lpBuffer, int nNumberOfBytesToWrite, out int lpNumberOfBytesWritten, out OVERLAPPED lpOverlapped);
private static extern bool CloseHandle(int hObject);
private int iHandle;
public bool Open()
{
iHandle = CreateFile("LPT1:", (uint)FileAccess.ReadWrite, 0, 0, (int)FileMode.Open, 0, 0);
if (iHandle != -1)
{
return true;
}
else
{
return false;
}

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






