vszy 发表于 2016-3-25 00:38:04

[已解决]同一脚本为什么就XP下报错呢?

本帖最后由 vszy 于 2016-3-25 06:56 编辑

$OS=@OSVersion
$BIT=@OSArch

Select
      case $BIT="X86" and ($OS="WIN_XP" or $OS="WIN_2003")
MsgBox("","","XPXPXP")
    Case $BIT="X86" and ($OS="WIN_7" or $OS="WIN_2003")
MsgBox("","","786786")
    Case $BIT="X64" and ($OS="WIN_7" or $OS="WIN_2003")
MsgBox("","","764764")
    Case $BIT="X86" and ($OS="WIN_81" or $OS="WIN_8")
MsgBox("","","832832")
    Case $BIT="X64" and ($OS="WIN_81" or $OS="WIN_8")
MsgBox("","","864864")
    Case Else
MsgBox("","","未识别")
EndSelect这个代码编译后可以全系统正确运行。

换了个写法:$OS=@OSVersion
$BIT=@OSArch

Select
case $BIT="X86" and ($OS="WIN_XP" or $OS="WIN_2003")
$txt = XPXPXP
MsgBox("","",$txt)

Case $BIT="X86" and ($OS="WIN_7" or $OS="WIN_VISTA")
$txt = 786786
MsgBox("","",$txt)

Case $BIT="X64" and ($OS="WIN_7" or $OS="WIN_VISTA")
$txt = 764764
MsgBox("","",$txt)

Case $BIT="X86" and ($OS="WIN_81" or $OS="WIN_8")
$txt = 832832
MsgBox("","",$txt)

Case $BIT="X64" and ($OS="WIN_81" or $OS="WIN_8")
$txt = 864864
MsgBox("","",$txt)
                              
Case Else
MsgBox("","","        未能识别")
EndSelect编译后只有XP系统报错,其它正常,不知为何?望有XP环境的测试下。

haijie1223 发表于 2016-3-25 05:03:38

把$txt等号后都用引号框起来

vszy 发表于 2016-3-25 06:55:30

回复 2# haijie1223


    问题是解决了,但是这是什么道理呢?

haijie1223 发表于 2016-3-25 07:36:16

回复 3# vszy


    我也说不出为什么哦,我只是觉得你辣么写不舒服~

afan 发表于 2016-3-25 11:50:58

跟系统没关吧,应该只和Au3版本有关
$txt = XPXPXP
这种不带引号包围的写法,也只有在3.3.13.x(貌似)及以上的版本才能这样写,而且还必须有XPXPXP函数定义才不会报错。当然,如果本来就是赋值字符串,那不带引号直接就是错误。

skyfree 发表于 2016-3-25 13:18:06

你在群里问我都没说话,在这里又问起来了。典型的编程基础概念太差,字符串和数值分不开。$txt = 786786 不报错因为这是数值,换句话说这里是 七十八万七百六十八,而实际上数值 786786 和字符串 "786786" 仍有本质的区别。写$txt = 786786无非因为这个是数值,巧了被认为是合法的,而 $txt = XPXPXP 报错则是因为字符串必须用引号。拜托回看一下关于数据类型的相关说明,走得走稳,别那么快学飞。

雨林GG 发表于 2016-3-25 14:15:36

LZ 真猛,把高手都楼上高手都引来了~
页: [1]
查看完整版本: [已解决]同一脚本为什么就XP下报错呢?