找回密码
 加入
搜索
查看: 9109|回复: 17

[AU3基础] Msgbox显示文本的奇怪问题.

 火.. [复制链接]
发表于 2011-4-29 19:57:35 | 显示全部楼层 |阅读模式
本帖最后由 easefull 于 2011-5-15 08:14 编辑

-----------------------------------------------------------------------------------------------
2011-04-29 提问:
有两个文件,用fileread读取全部内容保存到变量.
使用stringlen能正确显示这个变量包含的字符数量,
但是,试图使用msgbox把变量内容显示出来,却只显示了第一行的文字.

使用代码如下
Local $sText = FileRead("SNT.txt")
MsgBox(0, StringLen($sText), $sText)
文件:


另外,如果去掉或修改第一行后面的几个奇怪字符

则整个文本都可以正常显示.
请问这个是怎么原因?


-----------------------------------------------------------------------------------------------
2011-05-01

之前出现的情况,原因不在于那个删除和修改那个字符,而在于保存
记事本保存了以后把原来的编码00(Null)写成了20(空格).
而au3在处理中间有Null字符的字符串时似乎会直接返回.

但似乎又有点不对.如以下代码:
Local $sText = FileRead("SNT.txt")
MsgBox(0, "1", StringLen($sText) &@CRLF& "'" & $sText & "'")
MsgBox(0, "2", StringLen($sText) &@CRLF& "'" & $sText & "'")

1.如果是错误,为什么还会运行第2次msgbox
2.如果仅仅是遇到Null返回字符串结束,那么为什么StringLen($sText)能返回正确的字符数量?
还请高手解惑


-----------------------------------------------------------------------------------------------
2011-05-15 精减问题(不需再下载文件)

Local $sText = "Hello " & Chr(0x00) & " World!"
MsgBox(0, "", "字符数量: " & StringLen($sText) &@CRLF&@CRLF& "字符串显示: " &@CRLF& $sText)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-29 22:54:34 | 显示全部楼层
估计是 字符乱码,无法显示,错误返回
发表于 2011-4-29 23:11:33 | 显示全部楼层
本帖最后由 love5173 于 2011-4-29 23:12 编辑

回复 1# easefull
我在正则减肥里面已经回答是什么原因了,你去看看吧
发表于 2011-4-29 23:37:51 | 显示全部楼层
那几个字符应该是控制后面的空白符的16进制样式的,我试验了一下,去除后后面的空白显示都是20,如果不去除就是00,这部分我也不是很懂
 楼主| 发表于 2011-5-1 16:31:58 | 显示全部楼层
回复 4# love5173

得益于您的提醒,折腾了两天我终于也把那个文件的处理方式也弄出来了^_^
http://www.autoitx.com/forum.php ... amp;fromuid=7652895
 楼主| 发表于 2011-5-1 16:37:07 | 显示全部楼层
本帖最后由 easefull 于 2011-5-15 08:14 编辑

之前出现的情况,原因不在于那个删除和修改那个字符,而在于保存
记事本保存了以后把原来的编码00(Null)写成了20(空格).
而au3在处理中间有Null字符的字符串时似乎会直接返回.

但似乎又有点不对.如以下代码:
Local $sText = FileRead("SNT.txt")
MsgBox(0, "1", StringLen($sText) &@CRLF& "'" & $sText & "'")
MsgBox(0, "2", StringLen($sText) &@CRLF& "'" & $sText & "'")

1.如果是错误,为什么还会运行第2次msgbox
2.如果仅仅是遇到Null返回字符串结束,那么为什么StringLen($sText)能返回正确的字符数量?
还请高手解惑
发表于 2011-5-2 08:10:50 | 显示全部楼层
帮顶,我以前写INI的时候,也出现过乱码,一直没解决,就放弃了写入文本的方案
发表于 2011-5-7 10:56:37 | 显示全部楼层
可能是你系统的字体编码问题
发表于 2011-5-7 23:11:14 | 显示全部楼层
[img][/img]看我的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-5-8 11:37:08 | 显示全部楼层
测试未发现问题啊
发表于 2011-5-8 20:25:16 | 显示全部楼层
太复杂了,...
 楼主| 发表于 2011-5-15 08:15:55 | 显示全部楼层
[/img]看我的
wtping 发表于 2011-5-7 23:11


看你再改文件.再FPE
 楼主| 发表于 2011-5-15 08:17:44 | 显示全部楼层
回复 10# yinbinly

不是脚本不能执行.
而是读了近百k的文件.msgbox只显示了一行文本.
发表于 2011-5-15 08:29:42 | 显示全部楼层
看一下,对以后有帮助
发表于 2011-5-15 09:42:15 | 显示全部楼层
这个老早就有人讨论过了
http://www.autoitscript.com/foru ... 0-now-returns-0x00/
你看看就明白 了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 09:57 , Processed in 0.084789 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表