apibits 发表于 2010-7-21 01:24:01

[已解决]求助一个循环,可以以00001,00002....这样的方式使用

本帖最后由 apibits 于 2010-7-21 11:30 编辑

如题,我正在研究这问题,搞得头晕....{:face (394):}
循环的目的是根据提供的2个值 开头最后即这样:
00001
00002
00003
00004
....
00010
00011
....
00100
00101
只提供00001 和 最后的00101 请问如何设计呢
我想是For 单步- 1但是一下子把"0"全部删掉了...怎样不要删掉呢?
跪求高手讲解~~~~{:face (229):}

Ziya 发表于 2010-7-21 09:06:05

不太明白lz为什么非要这样...
在循环之后得到$i的数值,然后根据数值来往前面加0不可以么?For $i = 0 To 1000
       
Select ;确定前面0的个数
                        Case ($i < 10)
                                $ling = "000"
                        Case ($i >= 10 And $i < 100)
                                $ling = "00"
                        Case ($i >= 100 And $i < 1000)
                                $ling = "0"
                        Case Else
                                $ling = ""
                EndSelect
                MsgBox(0,"数值",$ling&$i)
                Next

3mile 发表于 2010-7-21 09:15:46

是你要的结果吗?Local $val
For $i=1 To 101
        $val&=StringFormat("%05d\n",$i)
Next
MsgBox(0,0,$val)

apibits 发表于 2010-7-21 10:25:46

本帖最后由 apibits 于 2010-7-21 10:40 编辑

请教楼上,          "%05d\n"    在这里起什么作用,能解释下么
???{:face (396):}


另外,如果我需要输出这些数字该怎么办呢
比如
FileWrite(@ScriptDir & "\Apibits.config",$val & "=10155748")这样
或者像2楼的那样
FileWrite(@ScriptDir & "\Apibits.config",$ling & $i & "=10155748")
只是2楼这样测试成功了...
用的是IniWrite函数

3mile 发表于 2010-7-21 10:55:12

StringFormat("%05d",$i)去掉/n。
%05d数字不足5位时左边补0。
/n添加换行符

apibits 发表于 2010-7-21 11:30:09

啊...差不多明白了...谢谢.

Ziya 发表于 2010-7-21 11:50:13

3楼的办法靠谱
我那个做法太笨了

apibits 发表于 2010-7-21 12:55:40

3楼的办法靠谱
我那个做法太笨了
Ziya 发表于 2010-7-21 11:50 http://www.autoitx.com/images/common/back.gif


    关键是你的那个方法可用啊...
关于那个格式化文本的函数我实在是不理解...郁闷..
现在成了这样....
$PcNumSta = "01"
$PcNumExi = "99"
$Zero1 = ""
$Zero2 = ""
$Zero3 = ""

If StringLen($PcNumExi)=4 Then
        $Zero1 = "000"
        $Zero2 = "00"
        $Zero3 = "0"
ElseIf         StringLen($PcNumExi)=3 Then
        $Zero1 = "00"
        $Zero2 = "0"
        $Zero3 = ""
ElseIf         StringLen($PcNumExi)=2 Then
        $Zero1 = "0"
        $Zero2 = ""
        $Zero3 = ""
Else

EndIf       
For $i = 0 To $PcNumExi
        Select ;确定前面0的个数
    Case ($i < 10)
       $ling = $Zero1
    Case ($i >= 10 And $i < 100)
       $ling = $Zero2
    Case ($i >= 100 And $i < 1000)
       $ling = $Zero3
        Case Else
           $ling = ""
EndSelect
$Kill = $PcQz & $ling & $i & $PcHz
IniWrite(@ScriptDir & "\Fbl1.ini","Apibits",$Kill,"1024,768,32,60")
Next
看到了???但是那个就是不成功....我郁闷的很.....

Ziya 发表于 2010-7-21 13:05:07

$PcNumSta = "01"
$PcNumExi = "99"
$PcQz = "前缀"
$PcHz = "后缀"
For $i = 0 To $PcNumExi
$Kill = $PcQz & StringFormat("%04d",$i) & $PcHz
IniWrite(@ScriptDir & "\Fbl1.ini","Apibits",$Kill,"1024,768,32,60")
Next生成的是

前缀0000后缀=1024,768,32,60
前缀0001后缀=1024,768,32,60
前缀0002后缀=1024,768,32,60
前缀0003后缀=1024,768,32,60
前缀0004后缀=1024,768,32,60
前缀0005后缀=1024,768,32,60
前缀0006后缀=1024,768,32,60
前缀0007后缀=1024,768,32,60
前缀0008后缀=1024,768,32,60
前缀0009后缀=1024,768,32,60
......
不是这样的么?
页: [1]
查看完整版本: [已解决]求助一个循环,可以以00001,00002....这样的方式使用