求助啊!!vb.net中关于INI文件读取的问题
编写了一个INI文件的读写程序,button2能够成功的写文件,button1却无法正确读取ini文件的内容。总是返回“错误”,在网上查了很多资料,都是这种格式写的,都说可以正常运行,我的为什么不行啊?
向各位大侠讨教一下!!!
Public Class Form1
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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Long
Dim s As New String(Chr(0), 256)
a = GetPrivateProfileString("MASTER", "Name", "错误", s, Len(s), "c:\test.ini")
TextBox1.Text = Microsoft.VisualBasic.Left(s, InStr(s, Chr(0)) - 1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
WritePrivateProfileString("MASTER", "Name", "正确", "c:\test.ini")
WritePrivateProfileString("MASTER", "age", "26", "c:\test.ini")
End Sub
End Class
--------------------编程问答-------------------- 项目->属性->设置
设置好名称类型值后。
使用My.Settings.
丢弃ini文件吧 --------------------编程问答-------------------- 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
其中的lpReturnedString 需要用到引用类型的StringBuilder吧。
我用C#写过 可以给你参考一下
/// <summary> /// WindowsAPI 读取Windows ini配置文件
/// </summary>
/// <param name="lpApplicationName">配置文件节</param>
/// <param name="lpKeyName">配置关键字</param>
/// <param name="lpDefault">默认值</param>
/// <param name="lpReturnedString">读取值</param>
/// <param name="nSize">大小</param>
/// <param name="lpFileName">配置文件名</param>
/// <returns></returns>
[System.Runtime.InteropServices.DllImport("kernel32")]
public static extern long GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, System.Text.StringBuilder lpReturnedString, int nSize, string lpFileName);
/// <summary>
/// WindowsAPI 写Windows ini配置文件
/// </summary>
/// <param name="lpApplicationName">配置文件节</param>
/// <param name="lpKeyName">配置关键字</param>
/// <param name="nSize">大小</param>
/// <param name="lpFileName">配置文件名</param>
/// <returns></returns>
[System.Runtime.InteropServices.DllImport("kernel32")]
public static extern long WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
/// <summary> /// 读取配置文件
/// </summary>
/// <param name="AppName">配置文件节</param>
/// <param name="KeyName">配置关键字</param>
/// <param name="FileName">配置文件名</param>
/// <returns></returns>
public static string ReadConfig(string AppName,string KeyName,string FileName) {
StringBuilder sb = new StringBuilder(255);
GetPrivateProfileString(AppName, KeyName, "", sb, sb.Capacity, FileName);
if (sb == null) return "";
return sb.ToString();
} --------------------编程问答-------------------- 用my.settings的话怎么实现数组的存储呢,比如我要存储128个数据,如何实现呢? --------------------编程问答-------------------- 数据多用XML吧
补充:.NET技术 , VB.NET