找回密码
 加入
搜索
查看: 5313|回复: 16

[系统综合] assgin的bug难道?

 火.. [复制链接]
发表于 2011-6-25 01:13:44 | 显示全部楼层 |阅读模式
$str='山寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))


$str='山[寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))
发表于 2011-6-25 08:52:25 | 显示全部楼层
不要动不动就是BUG?
 楼主| 发表于 2011-6-25 09:34:29 | 显示全部楼层
回复 2# hzxymkb


    那么你觉得是什么?
发表于 2011-6-25 12:52:01 | 显示全部楼层
本帖最后由 netegg 于 2011-6-25 12:53 编辑

用assign赋值不能先以其他方式赋值,这时,assign会把变量变成字符串assign()的第一个参数是不包含$的.你这样并不是给$str赋值ffffff,是首先将$str转化为'$str',这个和$str是两码事,不是同一个变量,嗨,说的有点混乱,楼主自己理解下,大体意思是那两个不是一个变量
Dim $str
Assign('str','fffffff')
MsgBox(0,'',Eval('str'))
发表于 2011-6-25 15:43:12 | 显示全部楼层
本帖最后由 3mile 于 2011-6-25 15:45 编辑

我想应该是编码的原因,并不是Assign函数的问题.
解释起来很麻烦,上代码吧.
$str='山[寨'
msgbox(0,0,$str)

if StringLen($str)>1 then
        $str=StringToBinary($str,4)
;~         local $temp
;~         for $i=1 to StringLen($str)
;~                 $temp&=StringTrimLeft(StringToBinary(StringMid($str,$i,1),4),2)
;~         Next
;~         $str="0x"&$temp
EndIf

Assign($str,'fffffff')
MsgBox(0,$str,IsDeclared($str)&' '&Eval($str)&@CRLF&BinaryToString($str))
发表于 2011-6-25 17:42:36 | 显示全部楼层
我认为LS正解
还有,如果不能解决别人问题的话,其他人也不要先否定哦
发表于 2011-6-25 19:43:36 | 显示全部楼层
事实上确实是编码问题,此问题在BUG区有人提过,解决方案就是SciTE中查看-文件编码,选不是默认的那些即可
发表于 2011-6-25 21:10:50 | 显示全部楼层
软件没问题
楼主的代码有问题
第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有英文原文的可以贴出来给大家参考下)
每个变量都有自己的名字(这跟邮箱是不是很像?)而且必须以英文 字符"$"开头,其中只能包含 字母, 数字 和下划线_字符
Assign($str,'fffffff');;相当于$山寨='fffffff',$山[寨 是不合法的变量名
Eval($str)实际上相当于 $山寨,虽然不可以在脚本中直接使用这样的变量,但编译后却是合法的
即使用不用中文,$str='shan[zhai'一样出错

以上为个人理解,不代表官方意见,仅供参考

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
3mile + 30 + 5 多谢指点

查看全部评分

发表于 2011-6-25 21:16:40 | 显示全部楼层
??????????????

评分

参与人数 1金钱 -30 收起 理由
hzxymkb -30 恶意灌水,扣分警告!

查看全部评分

发表于 2011-6-25 21:29:36 | 显示全部楼层
3哥的代码说明问题了!楼主认真的看看!不要动不动就BUG!看到BUG就怕怕了!


再看看pcbar超版的回复吧!
发表于 2011-6-25 21:43:54 | 显示全部楼层
回复 5# 3mile
我想应该是编码的原因,并不是Assign函数的问题.
解释起来很麻烦,上代码吧.
3mile 发表于 2011-6-25 15:43



   

    你这里有个问题,
  $str=StringToBinary($str,4)
实际上已经让$str="0xC9BD5BD5AF"
而$0xC9BD5BD5AF是一个合法的变量,所以可以得到正确结果.
如果不改变$str的值,程序永远不会有结果的.
发表于 2011-6-25 22:29:23 | 显示全部楼层
回复 11# pcbar
前辈从根本上解释这个问题,感谢前辈.
我一直没有注意到这原来是定义变量还有限制.多谢前辈科普基础知识.
发表于 2011-6-26 06:53:22 | 显示全部楼层
软件没问题
楼主的代码有问题
第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有 ...
pcbar 发表于 2011-6-25 21:10


Each variable has a name (again, similar to a mailbox) and must start with the $ character and may only contain letters, numbers and the underscore _ character
 楼主| 发表于 2011-6-26 12:47:36 | 显示全部楼层
回复 8# pcbar

第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有英文原文的可以贴出来给大家参考下

   
如果"["是不允许,那"]"这个字符应该也不能,可是让人郁闷的是:

$str='山]寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))
发表于 2011-6-26 13:25:06 | 显示全部楼层
看来不是编码问题,真是一个神奇的现象
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 01:20 , Processed in 0.095105 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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