我假设你的ini文件中没有多余的空格: Private Sub Command1_Click() Dim filename As String filename = "c:\aa.ini" Dim findstr As String findstr = "text1=panjin1" Dim buff() As Byte Dim i As Long i = FileLen(filename) ReDim buff(i - 1) Open filename For Binary As #1 Get #1, , buff Close #1 Dim s As String s = StrConv(buff, vbUnicode) s = Replace(s, findstr + vbCrLf, "") Open filename For Binary As #1 Put #1, , s Close #1 End Sub
'API: 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'Function: Function DelIniSec(Section As String, iniFileName As String) As Boolean If WritePrivateProfileString(Section, vbNullString, vbNullString,_ iniFileName) = 0 Then GoTo DelIniSecErr Else DelIniSec = True End If
//读出来的是分行出来的全部值呀, 我要怎样才能利用s全部值去删固定行驶 text1=panjin1 呢?在我上面的程序中是利用了replace函数,将"text1=panjin1"连同后面的回车换行替换成了"" 这样就删除了该行//还想问下 Get #1, , buff 这步是什么意思呢?谢谢? Get #1, , buff 的意思是读出文件内容到数组buff//每次都是你在帮我,能告诉我你的大名吗? 我的名字是:马畅
另外,经 szmickylee的提醒,发现的确可以用ritePrivateProfileString解决你的问题:Option Explicit 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 Private Sub Form_Load() WritePrivateProfileString "myapp", "text1", vbNullString, "c:\aa.ini" End Sub
Private Sub Command1_Click()
Dim filename As String
filename = "c:\aa.ini"
Dim findstr As String
findstr = "text1=panjin1"
Dim buff() As Byte
Dim i As Long
i = FileLen(filename)
ReDim buff(i - 1)
Open filename For Binary As #1
Get #1, , buff
Close #1
Dim s As String
s = StrConv(buff, vbUnicode)
s = Replace(s, findstr + vbCrLf, "")
Open filename For Binary As #1
Put #1, , s
Close #1
End Sub
[MyApp]
text1=panjin1
text2=panjin2
[MyApp2]
text3=panjin3我用上面那段
msbox(s)
读出来的是分行出来的全部值呀, 我要怎样才能利用s全部值去删固定行驶 text1=panjin1 呢?还想问下 Get #1, , buff 这步是什么意思呢?谢谢?每次都是你在帮我,能告诉我你的大名吗?
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'Function:
Function DelIniSec(Section As String, iniFileName As String) As Boolean
If WritePrivateProfileString(Section, vbNullString, vbNullString,_
iniFileName) = 0 Then
GoTo DelIniSecErr
Else
DelIniSec = True
End If
DelIniSecErr:
DelIniSec = False
End Function
其实只要改一下,你就知道如何删除key了。你看一下就懂了。
这样就删除了该行//还想问下 Get #1, , buff 这步是什么意思呢?谢谢?
Get #1, , buff 的意思是读出文件内容到数组buff//每次都是你在帮我,能告诉我你的大名吗?
我的名字是:马畅
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
Private Sub Form_Load()
WritePrivateProfileString "myapp", "text1", vbNullString, "c:\aa.ini"
End Sub