fenhanxue 发表于 2015-5-30 18:10:42

基础太差了,请指点问题出在哪里【已解决】

本帖最后由 fenhanxue 于 2015-6-4 10:43 编辑

下面代码,运行后,为什么$a只有一个字符,而不是十个字符?Local $a

For $i = 1 To 10
        $a &= _ceshi()
       
Next


MsgBox(0,'',$a)

Func _ceshi()
        $rand=Random(19968,40911,1)
        Return BinaryToString ($rand,2)
EndFunc


已解决

ila 发表于 2015-5-30 23:17:44

本帖最后由 ila 于 2015-5-30 23:22 编辑

{:face (349):}Dim $path="1.txt", $a,$i
$open=FileOpen($path,10)
    For $i = 1 To 10
                $a[$i]=_ceshi()
                FileWrite($open,$a[$i])
        Next
FileClose($open)
ShellExecute("notepad.exe",$path)
Func _ceshi()
            $rand=Random(19968,40911,1)
            Return BinaryToString ($rand,2)
    EndFunc

樱花雪月 发表于 2015-5-31 11:30:03

本帖最后由 樱花雪月 于 2015-6-1 17:41 编辑


macran 发表于 2015-6-2 13:11:18

学习学习再学习

afan 发表于 2015-6-2 13:47:32

LZ第13行BinaryToString() 这种方式生成的有些字符串是MsgBox()无法正常显示的,但可以写入到记事本中查看,第9行改为FileWrite('xx.x', $a)即可
不过,更怀疑LZ本身使用BinaryToString()就是个问题,改为ChrW()试试

lahan 发表于 2015-6-3 19:36:22

BinaryToString()转换的时候不是标准的二进制格式在后面自动加上一个类似回车或换行的符号,单行文本是看不全的。取ASCII字符用ChrW()较好。若是非得用BinaryToString()的话去掉最右一个字符就可以了。

Local $a
For $i = 1 To 10
      $a &= _ceshi()
Next
MsgBox(0,'',$a)
Func _ceshi()
      $rand=Random(19968,40911,1)
      Return StringTrimRight(BinaryToString ($rand,2),1)
EndFunc

wei999 发表于 2015-6-5 17:36:39

这都是什么字啊{:face (114):}

haopp1 发表于 2015-6-6 01:02:36

表示不懂。。。。。。。。。。。。。。

樱花雪月 发表于 2015-6-7 22:00:55

Local $a
For $i = 1 To 10
    $a &= _ceshi()
Next
MsgBox(0, 0 ,$a)
Func _ceshi()
    Return StringStripCR( _
        BinaryToString( _
        Random(19968,40911,1), 2))
EndFunc
页: [1]
查看完整版本: 基础太差了,请指点问题出在哪里【已解决】