vb 中关于GetPrivateProfileSection用法

我用这个API为什么不能取得ini文件中的某一节点下所有的键值啊,只能返回第一条记录,唉,有没有高手能指点一下,我的源码是这样的,
:'IN model
Public Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub Command1_Click()
Dim ret As String * 32767
Dim x
x = GetPrivateProfileSection("请填入你想绑定的主机IP&MAC", ret, 255, App.Path & "\\config.ini")
MsgBox x
Text2.Text = ret
End Sub
INI文件中是这样的:
[请填入你想绑定的主机IP&MAC]
IP&MAC=192.168.1.6 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.7 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.8 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.9 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.10 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.50 00:EE:de:cd:e4:6e
IP&MAC=192.168.1.55 00:EE:de:cd:e4:6e
总之只能读出第一条记录,我想做一个ARP绑定工具,而INI文件中的MAC和IP地址是变量,可任意填写的,所以不能用GetPrivateProfileString

这时返回值 ret 的格式为:

第一个值 Chr(0) 第二个值 Chr(0) 第……个值 Chr(0) 第N个值 Chr(0) Chr(0)

Chr(0)即为 C 中的 Null。会截断到Text2的输出。

把Text2设为多行,ret 替换为 Text2.Text = Replace(Left(ret, InStr(ret, Chr(0) & Chr(0))), Chr(0), vbCrLf)
就可以在Text2里分行显示所有值了。


Private Sub Command1_Click()
Dim ret As String * 32767
Dim x
x = GetPrivateProfileSection("请填入你想绑定的主机IP&MAC", ret, 255, App.Path & "\\config.ini")
MsgBox x
Text2.Text = Text2.Text = Replace(Left(ret, InStr(ret, Chr(0) & Chr(0))), Chr(0), vbCrLf)
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-06
print方法可以在窗体上显示文本字符串和表达式的值,并可在其它图形对象或打印机上输出信息。
1、语法说明
在vb中,print方法是用来输出信息的专用过程,显示的文本是作为图像来处理的,因此,print方法显示的文本字符串也往往作为图形文本。visual
basic
允许在窗体、图形框和打印机用print方法显示文本字符串。
语法格式:
[对象]·print
[spc(n)|tab(n)
expression
charpos]
说明:
——指定文本显示的地方,可取的值:窗体名称、图片框名称或printer(打印机),也可以是立即窗口(debug)。如果省略“对象”,则指在当前窗体上输出。
——可选的,用来在输出中插入空白字符,这里n为要插入的空白字符数。
——可选的,用来将插入点定位在绝对列号上,这里n为列号。
——可选的,表示要打印的数值表达式或字符串表达式,如果省略,则打印一空行。
——可选的,指定下一个字符的插入点,可以是分号、逗号,也可以省略。
使用分号(;)则直接将插入点定位在上一个被显示字符之后;
使用逗号(,)则将下一个输出字符的插入点定位在制表符上;
如果省略charpos,则在下一行打印下一字符。
例如,在不同的对象上分别打印消息“this
is
a
testing
message”。
在名称为“myform”的窗体对象上显示;
myform.
print
“this
is
a
testing
message.”
★在名称为“picminimsg”的图片框对象上显示;
picminimsg.
print
“this
is
a
testing
message.”
★在当前窗体上显示;
print
“this
is
a
testing
message.”
‘省略对象
★在打印机上显示。
printer.
print
“this
is
a
testingmessage.”
2、几种输出方法
对于boolean数据,输出结果是:true或者false;
使用系统能识别的标准短日期格式书写date数据。当日期或时间部件丢失或为零时,只书写已提供的部件;
如果expressionlist(表达式)为空,则无内容书写。但如果expressionlist值为null,则输出null。在输出null关键字时,要把关键字正确翻译出来。
要把错误数据作为error
errorcode输出。在输出error关键字时,要把关键字正确翻译出来。
如果在具有缺省显示空间的模块之外使用此方法,则需要对象。否则将导致错误。但,如果在窗体模块上进行调用,则会在窗体上显示。
注意:
print方法只能用于可显示文本的对象。
因为print方法是按照字符比例进行打印,所以字符数与字符所占据的宽度固定的列的数目无关。如像w这样的宽字母占据的宽度超过一固定的列宽,而像i这样的窄字母占据的宽度则较小。所以,考虑到要使用比平均字符更宽的空间,表列一定要留有足够的余地。也可以使用固定间距的字体来确保每一字符均只占一列。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网