binghc 发表于 2011-6-25 01:13:44

assgin的bug难道?

$str='山寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))

$str='山[寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))

hzxymkb 发表于 2011-6-25 08:52:25

不要动不动就是BUG?

binghc 发表于 2011-6-25 09:34:29

回复 2# hzxymkb


    那么你觉得是什么?

netegg 发表于 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'))

3mile 发表于 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))

daiyu116 发表于 2011-6-25 17:42:36

我认为LS正解
还有,如果不能解决别人问题的话,其他人也不要先否定哦

飘云 发表于 2011-6-25 19:43:36

事实上确实是编码问题,此问题在BUG区有人提过,解决方案就是SciTE中查看-文件编码,选不是默认的那些即可

pcbar 发表于 2011-6-25 21:10:50

软件没问题
楼主的代码有问题
第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有英文原文的可以贴出来给大家参考下)
每个变量都有自己的名字(这跟邮箱是不是很像?)而且必须以英文 字符"$"开头,其中只能包含 字母, 数字 和下划线_字符Assign($str,'fffffff');;相当于$山寨='fffffff',$山[寨 是不合法的变量名
Eval($str)实际上相当于 $山寨,虽然不可以在脚本中直接使用这样的变量,但编译后却是合法的
即使用不用中文,$str='shan[zhai'一样出错

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

chuancai 发表于 2011-6-25 21:16:40

??????????????

hzxymkb 发表于 2011-6-25 21:29:36

3哥的代码说明问题了!楼主认真的看看!不要动不动就BUG!看到BUG就怕怕了!


再看看pcbar超版的回复吧!

pcbar 发表于 2011-6-25 21:43:54

回复 5# 3mile
我想应该是编码的原因,并不是Assign函数的问题.
解释起来很麻烦,上代码吧.
3mile 发表于 2011-6-25 15:43 http://www.autoitx.com/images/common/back.gif


   

    你这里有个问题,
$str=StringToBinary($str,4)
实际上已经让$str="0xC9BD5BD5AF"
而$0xC9BD5BD5AF是一个合法的变量,所以可以得到正确结果.
如果不改变$str的值,程序永远不会有结果的.

3mile 发表于 2011-6-25 22:29:23

回复 11# pcbar
前辈从根本上解释这个问题,感谢前辈.
我一直没有注意到这原来是定义变量还有限制.多谢前辈科普基础知识.

netegg 发表于 2011-6-26 06:53:22

软件没问题
楼主的代码有问题
第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有 ...
pcbar 发表于 2011-6-25 21:10 http://www.autoitx.com/images/common/back.gif

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

binghc 发表于 2011-6-26 12:47:36

回复 8# pcbar

第二个代码中出现了不允许做为变量名的字符"[",关于变量名帮助中的原文为(有英文原文的可以贴出来给大家参考下
   
如果"["是不允许,那"]"这个字符应该也不能,可是让人郁闷的是:

$str='山]寨'
Assign($str,'fffffff')
MsgBox(0,'',IsDeclared($str)&' '&Eval($str))

飘云 发表于 2011-6-26 13:25:06

看来不是编码问题,真是一个神奇的现象
页: [1] 2
查看完整版本: assgin的bug难道?