【已解决】读取数据流小心NULL无效字符
本帖最后由 elexy 于 2011-9-6 17:59 编辑请大家帮忙看一小段代码,不知道是AU3的bug还是我程序有问题
vista\win7 3.3.6.1 运行
Global $sText,$iPID
$iPID = Run(@ComSpec & ' /c bcdedit /create /d "abc" /application bootsector', @SystemDir, @SW_HIDE,6)
While 1
$sText &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd
MsgBox(64,"abc", "前面" & $sText & "后面")
运行后,msgbox显示的只有 变量以及变量以前的内容,("前面" & $sText) 变量以后的内容 "后面"不显示了 没有明白神马意思! 意思就是运行后,msgbox显示的只有 变量以及变量以前的内容,("可见" & $bcdid )变量以后的内容"无法识别" 不显示了 很大一部分可能就是正则表达式不匹配。
建议使用以下这种形式,首先保证你使用的正则是能匹配到东西的:
If StringRegExp($sText, "pattern1") Then
$bcdid = StringRegExpReplace("string", "pattern2", "replace")
EndIf 你先试下直接输出$sText有没有把。还百思不得其解。 你先试下直接输出$sText有没有把。还百思不得其解。
drunk 发表于 2011-9-6 14:32 http://www.autoitx.com/images/common/back.gif
正则肯定是匹配到内容了,这个原因排除,现在去掉正则的代码,直接输出也是一样的 回复 6# elexy
正则有输出? 回复elexy
正则有输出?
netegg 发表于 2011-9-6 15:51 http://www.autoitx.com/images/common/back.gif
正则确定有输出,为了排除正则的问题,已经将正则代码去掉,现在直接输出 $stext 本帖最后由 netegg 于 2011-9-6 16:08 编辑
回复 8# elexy
把msgbox放到wend前面,&=改成=
另外,你的那个bcdedit在什么文件夹里,除非是系统文件,否则要跟全路径
再说句不太客气的话,别动不动就bug,论坛里没几个人(包括我自己)到发现bug的水平 回复 1# elexy
试过了,可以显示啊! 回复elexy
试过了,可以显示啊!
xms77 发表于 2011-9-6 16:23 http://www.autoitx.com/images/common/back.gif
这样当然可以显示......我说的是通过StdoutRead获取的数据 StdoutRead获取的数据,最后一个字符是NULL字符,这个字符不可见,并且它之后的字符串会被截断。
输出结果时改成:MsgBox(64,"abc", "前面" & StringTrimRight($sText, 1) & "后面") StdoutRead获取的数据,最后一个字符是NULL字符,这个字符不可见,并且它之后的字符串会被截断。
输出结 ...
pusofalse 发表于 2011-9-6 17:07 http://www.autoitx.com/images/common/back.gif
终于解决了,超版才是正解!!!!!!
页:
[1]