小菜问题:如何在.ini文件中进行换行读写?
form中有两个textbox和button,
请问如何按第一个button在一个.ini文件中写第一个textbox中的字符串,然后按第二个button换行再写第二textbox个中的字符串。另外如果反过来,怎样把这两行字符分别读到两个textbox中去?
问题点数:50、回复次数:5Top
1 楼xzp1030(山角)回复于 2003-11-03 07:59:32 得分 15
存的时候:
open app.path & "\text.txt" for output as #1
open app.path & "\text.txt" for append as #1
print #1 ,vstring
取的时候
open app.path & "\text.txt" for input as #1
line input #1 ,vstring
textbox 中的内容赋给vstring.Top
2 楼5653325(等待开刃的刀)回复于 2003-11-03 08:57:09 得分 15
新建工程,窗体上有三个comand和2个text
Private Sub Command1_Click()'写入第一个字符串
Open "c:\1.txt" For Output As #1
Print #1, Text1.Text
Close #1
End Sub
Private Sub Command2_Click()'写入第二个字符串
Open "c:\1.txt" For Append As #1
Print #1, Text2.Text
Close #1
End Sub
Private Sub Command3_Click()'读取字符串
Dim str As String
Open "c:\1.txt" For Input As #1
Line Input #1, str
Text1.Text = str
Line Input #1, str
Text2.Text = str
Close #1
End SubTop
3 楼planetike(胜哥哥)回复于 2003-11-03 10:32:52 得分 15
先把下面的代码拷到一个模块文件中:
'两个函数 , 先在一个模快中定义API函数
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationname As String, ByVal LpKeyName As Any, ByVal lsString As Any, ByVal lplFilename As String) As Long
'如果是读INT值可以用字符串转化,所以没有另外定义函数
'Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPriviteProfileIntA" (ByVal lpApplicationname As String, ByVal LpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
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
'定义读与写INI文件的函数
'****读INI文件****
'文件名 lpFileName 如果不存在会自己创建,如果只有文件名,默认在Windows\system目录下
'[lpAppName]
'lpKeyName=取回的设置值
'lpDefault 当键值不存在时的默认值
Public Function ReadINI(lpFileName As String, lpAppName As String, LpKeyName As String) As String
Dim Temp As String * 20
Dim lpDefault As String
lpDefault = ""
If GetPrivateProfileString(lpAppName, LpKeyName, lpDefault, Temp, Len(Temp), lpFileName) <= 0 Then
ReadINI = ""
Else
ReadINI = MyTrim(Temp) 'MyTrim函数见下
End If
End Function
'****写INI文件****
'[lpAppName]
'lpKeyName=lpString
Public Function WriteINI(lpFileName As String, lpAppName As String, LpKeyName As String, lpString As String) As Boolean
If WritePrivateProfileString(lpAppName, LpKeyName, lpString, lpFileName) = 0 Then
WriteINI = False
Else
WriteINI = True
End If
End Function
'包含三个函数,分别取Rtrim,Ltrim,Trim
'可以去字符串中如ASC码为0,10,13,32的字符
Public Function MyRtrim(Tmpstr As String)
Dim i, s As Integer
i = Len(Tmpstr)
If i = 0 Then
MyRtrim = ""
Exit Function
End If
s = Asc(Right(Tmpstr, 1))
While (s = 0 Or s = 13 Or s = 10 Or s = 32) And i > 0
i = i - 1
Tmpstr = Left(Tmpstr, i)
If Len(Tmpstr) = 0 Then
MyRtrim = ""
Exit Function
End If
s = Asc(Right(Tmpstr, 1))
Wend
MyRtrim = Tmpstr
End Function
Public Function MyLtrim(Tmpstr As String)
Dim i, s As Integer
i = Len(Tmpstr)
If i = 0 Then
MyLtrim = ""
Exit Function
End If
s = Asc(Left(Tmpstr, 1))
While (s = 0 Or s = 13 Or s = 10 Or s = 32) And i > 0
i = i - 1
Tmpstr = Right(Tmpstr, i)
If Len(Tmpstr) = 0 Then
MyLtrim = Tmpstr
Exit Function
End If
s = Asc(Left(Tmpstr, 1))
Wend
MyLtrim = Tmpstr
End Function
Public Function MyTrim(Tmpstr As String)
Tmpstr = MyLtrim(Tmpstr)
Tmpstr = MyRtrim(Tmpstr)
MyTrim = Tmpstr
End Fun
***************************************
新建工程,放两个textbox,和四个command到form上,把下面的代码贴进去运行。
Private Sub Command1_Click()
WriteINI "c:\txt.ini", "TXT", "text1", Text1.Text
text1.text=""
End Sub
Private Sub Command2_Click()
WriteINI "c:\txt.ini", "TXT", "text2", Text2.Text
text2.text=""
End Sub
Private Sub Command3_Click()
Text1.Text = ReadINI("c:\txt.ini", "TXT", "text1")
End Sub
Private Sub Command4_Click()
Text2.Text = ReadINI("c:\txt.ini", "TXT", "text2")
End Sub
Top
4 楼weicod(唯唯)回复于 2003-11-03 10:55:01 得分 5
在程序中加入换行符chr(13)即可.Top
5 楼bird_cai(菜鸟想升级)回复于 2003-11-03 22:57:28 得分 0
谢谢大家,很快结贴.Top




