基本的问题:为什么WritePrivateProfileString不能写ini文件?

liangfengxx 2007-04-06 09:52:11
我首先声明一个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


然后定义写ini的函数:

Public Function WriteIni(FileName As String, _
PathName As String, _
KeyName As String, _
WriteValue As String) As Long
WriteIni=WritePrivateProfileString(PathName,KeyName,WriteValue,FileName)
End Function


在我的程序中调用WriteIni的时候无论如何都不能写信息到ini文件中,但是也不报错,真是郁闷,请教一哈,该怎么办?哪里有错吗?
...全文
476 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangfengxx 2007-04-23
  • 打赏
  • 举报
回复
谢谢,就是路径的问题~~~
duke731 2007-04-06
  • 打赏
  • 举报
回复
专业顶帖,专业接分
Missa 2007-04-06
  • 打赏
  • 举报
回复
这个函数完全正常,我使用过它写ini文件(和类似格式的文件).怀疑你的文件路径有误(默认的文件路径不是程序当前路径而是当前所在盘的根目录).
如果有其他问题,判断函数的返回值.
FoxShell 2012 免费版更新说明 2011.08.02 Beta2(Build 0802) FoxShell2012_Beta2.Exe 文件大小:1.86 MB (1,953,792 字节) CRC32:79EB97B3 MD5:FE77C4C48786E6BD9940F3E0EE5BD185 SHA1:B5C07293F7E0FEBBCA1A00B819E1CE94BB07037C 修正的BUG: 1、修正VB通过API调用保存对话框与LZMA压缩冲突的BUG,出现压缩数据失败(已换一种模式重LZMA的SDK,有效解决了这个问题); 2、修正WIN7下加密成功但不能生成文件的BUG; 3、修正用项目文件打开文件加密丢失图标的BUG; 4、修正打开项目后,读文件深度不一致的BUG; 5、修正开启新变量解释后,对某些语句和命令出现“非字符表达式”的BUG; 6、修正和增加新P-CODE解释开关命令:经测试不能被新P-CODE解释方式接受的代码,可以自己在代码中加入: = "" && 开始忽略(关闭)新代码解释方式,不分大小 = "" && 结束忽略(启用)新代码解释方式,不分大小 例如: FUNCTION WriteIniFile LPARAMETERS lcfilename, lcsection, lcsection_key, lcwrite_string = "" DECLARE INTEGER WritePrivateProfileString IN Win32API AS WriteINI STRING, STRING, STRING, STRING && 假设这一句使用新代码解释后出错,则在前后加跳过这句的开关 = "" IF TYPE("m.lcFileName")="C" .AND. TYPE("m.lcSection")="C" .AND. TYPE("m.lcSection_key")="C" .AND. TYPE("m.lcWrite_String")="C" IF EMPTY(m.lcfilename) .OR. EMPTY(m.lcsection) .OR. EMPTY(m.lcsection_key) RETURN "" ELSE IF .NOT. EMPTY(JUSTPATH(m.lcfilename)) .AND. .NOT. DIRECTORY(JUSTPATH(m.lcfilename)) MD (JUSTPATH(m.lcfilename)) ENDIF ENDIF = WriteINI(m.lcsection, m.lcsection_key, m.lcwrite_string, m.lcfilename) ENDIF CLEAR DLLS "WritePrivateProfileString" ENDFUNC ★★★ 由于本软件使用了编译技术,在加密过程中,为加密成功,请暂时关闭您的杀毒软件。 --------------------------------------------------------------------- 2011.07.30 - Beta1 正式发布Beta1!
阿明的FoxShell 2012免费版下载(Beta2 20110802) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FoxShell 2012 免费版更新说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2011.08.02 Beta2(Build 0802) FoxShell2012_Beta2.Exe 文件大小:1.86 MB (1,953,792 字节) CRC32:79EB97B3 MD5:FE77C4C48786E6BD9940F3E0EE5BD185 SHA1:B5C07293F7E0FEBBCA1A00B819E1CE94BB07037C 修正的BUG: 1、修正VB通过API调用保存对话框与LZMA压缩冲突的BUG,出现压缩数据失败(已换一种模式重LZMA的SDK,有效解决了这个问题); 2、修正WIN7下加密成功但不能生成文件的BUG; 3、修正用项目文件打开文件加密丢失图标的BUG; 4、修正打开项目后,读文件深度不一致的BUG; 5、修正开启新变量解释后,对某些语句和命令出现“非字符表达式”的BUG; 6、修正和增加新P-CODE解释开关命令:经测试不能被新P-CODE解释方式接受的代码,可以自己在代码中加入: = "<Skip FoxShell Start>" && 开始忽略(关闭)新代码解释方式,不分大小 = "<Skip FoxShell End>" && 结束忽略(启用)新代码解释方式,不分大小 例如: FUNCTION WriteIniFile LPARAMETERS lcfilename, lcsection, lcsection_key, lcwrite_string = "<Skip FoxShell Start>" DECLARE INTEGER WritePrivateProfileString IN Win32API AS WriteINI STRING, STRING, STRING, STRING && 假设这一句使用新代码解释后出错,则在前后加跳过这句的开关 = "<Skip FoxShell End>" IF TYPE("m.lcFileName")="C" .AND. TYPE("m.lcSection")="C" .AND. TYPE("m.lcSection_key")="C" .AND. TYPE("m.lcWrite_String")="C" IF EMPTY(m.lcfilename) .OR. EMPTY(m.lcsection) .OR. EMPTY(m.lcsection_key) RETURN "" ELSE IF .NOT. EMPTY(JUSTPATH(m.lcfilename)) .AND. .NOT. DIRECTORY(JUSTPATH(m.lcfilename)) MD (JUSTPATH(m.lcfilename)) ENDIF ENDIF = WriteINI(m.lcsection, m.lcsection_key, m.lcwrite_string, m.lcfilename) ENDIF CLEAR DLLS "WritePrivateProfileString" ENDFUNC 感谢我的用户老康提供上面的例子。 注意:如果您的文件包含64K以上的类库,请将FoxShell读取文件规则的深度调整为1,以避免出错。 ★★★ 由于本软件使用了编译技术,在加密过程中,为加密成功,请暂时关闭您的杀毒软件。
FoxShell2012免费版+中文使用说明 阿明的FoxShell 2012免费版下载(Beta2 20110802) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FoxShell 2012 免费版更新说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2011.08.02 Beta2(Build 0802) FoxShell2012_Beta2.Exe 文件大小:1.86 MB (1,953,792 字节) CRC32:79EB97B3 MD5:FE77C4C48786E6BD9940F3E0EE5BD185 SHA1:B5C07293F7E0FEBBCA1A00B819E1CE94BB07037C 修正的BUG: 1、修正VB通过API调用保存对话框与LZMA压缩冲突的BUG,出现压缩数据失败(已换一种模式重LZMA的SDK,有效解决了这个问题); 2、修正WIN7下加密成功但不能生成文件的BUG; 3、修正用项目文件打开文件加密丢失图标的BUG; 4、修正打开项目后,读文件深度不一致的BUG; 5、修正开启新变量解释后,对某些语句和命令出现“非字符表达式”的BUG; 6、修正和增加新P-CODE解释开关命令:经测试不能被新P-CODE解释方式接受的代码,可以自己在代码中加入: = "<Skip FoxShell Start>" && 开始忽略(关闭)新代码解释方式,不分大小 = "<Skip FoxShell End>" && 结束忽略(启用)新代码解释方式,不分大小 例如: FUNCTION WriteIniFile LPARAMETERS lcfilename, lcsection, lcsection_key, lcwrite_string = "<Skip FoxShell Start>" DECLARE INTEGER WritePrivateProfileString IN Win32API AS WriteINI STRING, STRING, STRING, STRING && 假设这一句使用新代码解释后出错,则在前后加跳过这句的开关 = "<Skip FoxShell End>" IF TYPE("m.lcFileName")="C" .AND. TYPE("m.lcSection")="C" .AND. TYPE("m.lcSection_key")="C" .AND. TYPE("m.lcWrite_String")="C" IF EMPTY(m.lcfilename) .OR. EMPTY(m.lcsection) .OR. EMPTY(m.lcsection_key) RETURN "" ELSE IF .NOT. EMPTY(JUSTPATH(m.lcfilename)) .AND. .NOT. DIRECTORY(JUSTPATH(m.lcfilename)) MD (JUSTPATH(m.lcfilename)) ENDIF ENDIF = WriteINI(m.lcsection, m.lcsection_key, m.lcwrite_string, m.lcfilename) ENDIF CLEAR DLLS "WritePrivateProfileString" ENDFUNC 感谢我的用户老康提供上面的例子。 注意:如果您的文件包含64K以上的类库,请将FoxShell读取文件规则的深度调整为1,以避免出错。 ★★★ 由于本软件使用了编译技术,在加密过程中,为加密成功,请暂时关闭您的杀毒软件。 主程序已加壳,感谢Nooby提供的『 Shielden 』。由于加壳,启动较慢,也可能被误报。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧