anythinging 发表于 2024-4-26 23:06:52

【已解决】求教根据变量值写入ini

本帖最后由 anythinging 于 2024-4-27 14:35 编辑

脑子实在是转不过来了,用for 加嵌套,始终弄不出来,请各位朋友指点下!

#cs      ;根据变量和数值,写入ini,
      如$a = 3 ,就写入3个字段,如果为0则跳过

      
                name = A1
                port = 1
      
                name = A2
                port = 2
      
                name = A3
                port = 3

#ce

;傻瓜写法
      Local $a = 3,$b = 2,$c = 1,$d = 0,$e = 4
      IniWrite('test.ini','test1','name','A1')
      IniWrite('test.ini','test1','pw',1)
      IniWrite('test.ini','test2','name','A2')
      IniWrite('test.ini','test2','pw',2)
      IniWrite('test.ini','test3','name','A3')
      IniWrite('test.ini','test3','pw',3)
      IniWrite('test.ini','test4','name','B1')
      IniWrite('test.ini','test4','pw',4)
      IniWrite('test.ini','test5','name','B2')
      IniWrite('test.ini','test5','pw',5)
      IniWrite('test.ini','test6','name','C1')
      IniWrite('test.ini','test6','pw',6)
      IniWrite('test.ini','test7','name','E1')
      IniWrite('test.ini','test7','pw',7)
      IniWrite('test.ini','test8','name','E2')
      IniWrite('test.ini','test8','pw',8)
      IniWrite('test.ini','test9','name','E3')
      IniWrite('test.ini','test9','pw',9)
      IniWrite('test.ini','test10','name','E4')
      IniWrite('test.ini','test10','pw',10)

afan 发表于 2024-4-26 23:39:25

你这样写变量能循环才怪。
用一维数组
Local $a0 =
Local $a1 = ['A', 'B', 'C', 'D', 'E']
...
或二维数组,看你自己的需求

邪恶海盗 发表于 2024-4-26 23:54:20

本帖最后由 邪恶海盗 于 2024-4-26 23:56 编辑

for $x=1 to 3
for $y=1 to 4
      IniWriteSection ('test.ini','test' & $x,'name=A' & $y & @LF & 'pw=' & $y)
next
next
没测试,不知道对不对...

anythinging 发表于 2024-4-27 12:40:04

afan 发表于 2024-4-26 23:39
你这样写变量能循环才怪。
用一维数组
Local $a0 =

感谢回复,我这里的$a,$b,$c,$d,$e,是取自其它几个ini文件(a.ini/b.ini/c.ini/d.ini/e.ini),根据$a-$e的值 ,整理成一个新的ini。可能没表达清楚,我再研究一下。

afan 发表于 2024-4-27 13:15:05

anythinging 发表于 2024-4-27 12:40
感谢回复,我这里的$a,$b,$c,$d,$e,是取自其它几个ini文件(a.ini/b.ini/c.ini/d.ini/e.ini),根据$a-$e ...

看你的描述,关键字 test1 - test10,这和你的循环需求是相关的。而循环取值最简单的方式就是使用数组。
“根据$a-$e的值 ,整理成一个新的ini”,这里的关键就是需要将其整理成数组,值为多少,从何获取都不是重点,重点是其数据的写法。用几个单独的变量来赋值对于循环而言没有意义。

anythinging 发表于 2024-4-27 13:40:22

afan 发表于 2024-4-27 13:15
看你的描述,关键字 test1 - test10,这和你的循环需求是相关的。而循环取值最简单的方式就是使用数组。
...

感谢指点!我好象用二维数组实现了!验证成功后将代码发上来。

anythinging 发表于 2024-4-27 14:32:25

本帖最后由 anythinging 于 2024-4-27 14:43 编辑

感谢各位指点,已实现,要点如下:
1、关键在于必需要使用二维数组
2、单独指定字段号变量,脱离$i,之前在这个地方弄昏了头

姓名位置还没弄,应该还要用到一组for循环。
大家看看还有没有需要改进的。

      Local $a = 3,$b = 2,$c = 1,$d = 0,$e = 5
      Local $all = [['A',$a],['B',$b],['C',$c],['D',$d],['E',$e]]
      Local $zdnum = 1      ;字段序号
Func _ok1()
      $x = UBound($all)
      For $i = 0 To $x - 1 Step 1
                        If $all[$i] > 0 Then      ;检测是否大于0,大于0则汇总
                              For $ii = 1 To $all[$i] Step 1
                                        IniWrite('test.ini','test'&$zdnum,'序号',$all[$i]&$ii)
                                        IniWrite('test.ini','test'&$zdnum,'编号',$all[$i]&1000+$ii)
                                        IniWrite('test.ini','test'&$zdnum,'姓名','')

                                        $zdnum += 1
                              next
                        EndIf
      Next
EndFunc


anythinging 发表于 2024-4-27 14:37:12

代码目的是读取各个ini文件中的字段及所属内容,汇总整理成一份新的ini文件,生成序号、编号、姓名等一系列信息。

afan 发表于 2024-4-27 16:27:01

一维二维都行,如何方便如何来
Local $a0 =
Local $a1 = ['A', 'B', 'C', 'D', 'E']
Local $iX = 0
For $ii = 0 To UBound($a0) - 1
        For $ij = 0 To $a0[$ii] - 1
                IniWriteSection('test.ini', 'test' & $iX + 1, '        name=' & $a1[$ii] & $ij + 1 & @LF & '        pw=' & $iX + 1)
                $iX += 1
        Next
Next

anythinging 发表于 2024-4-27 19:28:30

afan 发表于 2024-4-27 16:27
一维二维都行,如何方便如何来
必需是您这个方便!一目了然!
数据结构一眼全了解了!
页: [1]
查看完整版本: 【已解决】求教根据变量值写入ini