easefull 发表于 2011-4-29 19:57:35

Msgbox显示文本的奇怪问题.

本帖最后由 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)

the886 发表于 2011-4-29 22:54:34

估计是 字符乱码,无法显示,错误返回

love5173 发表于 2011-4-29 23:11:33

本帖最后由 love5173 于 2011-4-29 23:12 编辑

回复 1# easefull
我在正则减肥里面已经回答是什么原因了,你去看看吧

love5173 发表于 2011-4-29 23:37:51

那几个字符应该是控制后面的空白符的16进制样式的,我试验了一下,去除后后面的空白显示都是20,如果不去除就是00,这部分我也不是很懂

easefull 发表于 2011-5-1 16:31:58

回复 4# love5173

得益于您的提醒,折腾了两天我终于也把那个文件的处理方式也弄出来了^_^
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=24220&pid=296537&fromuid=7652895

easefull 发表于 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)能返回正确的字符数量?
还请高手解惑

58fly 发表于 2011-5-2 08:10:50

帮顶,我以前写INI的时候,也出现过乱码,一直没解决,就放弃了写入文本的方案

redapple2008 发表于 2011-5-7 10:56:37

可能是你系统的字体编码问题

wtping 发表于 2011-5-7 23:11:14

{:face (361):}看我的

yinbinly 发表于 2011-5-8 11:37:08

测试未发现问题啊

wsfda 发表于 2011-5-8 20:25:16

太复杂了,...

easefull 发表于 2011-5-15 08:15:55

看我的
wtping 发表于 2011-5-7 23:11 http://www.autoitx.com/images/common/back.gif

看你再改文件.再FPE{:face (114):}

easefull 发表于 2011-5-15 08:17:44

回复 10# yinbinly

不是脚本不能执行.
而是读了近百k的文件.msgbox只显示了一行文本.

淡定开源 发表于 2011-5-15 08:29:42

看一下,对以后有帮助

happytc 发表于 2011-5-15 09:42:15

这个老早就有人讨论过了
http://www.autoitscript.com/forum/topic/46119-chr0-now-returns-0x00/
你看看就明白 了
页: [1] 2
查看完整版本: Msgbox显示文本的奇怪问题.