afan
发表于 2011-3-31 21:06:55
回复afan
...
就是仅对%%之间的进行计算,其他保持原样 ...
feicuiboy 发表于 2011-3-31 20:01 http://autoitx.com/images/common/back.gif
你早说不就好了~ 这个和之前不是一样哦,之前的%%之间的只是变量: “AA=该列有%$xx%-2个”,现在你的意思是:“AA=该列有%$xx-2%个”
feicuiboy
发表于 2011-3-31 21:18:14
回复 16# afan
=======================
就是在配置文件中有一行是
AA=该列有%$xx-2%个
若数组$xx=100
然后msgbox后程序得输出为:
该列有98个
不知道我讲的你是否明白?
afan
发表于 2011-3-31 21:27:43
文字%$xx-2%文字
还有别的格式吗?如:
文字%$xx*2%文字 --- 其它运算符如*/
文字%$xx-2%文字 --- 不是数组
文字%$xx%文字 --- 没有运算
feicuiboy
发表于 2011-3-31 21:38:35
本帖最后由 feicuiboy 于 2011-3-31 21:45 编辑
回复 18# afan
========================格式有如下几种:
第一种:上图第1、2、4、5、6、7、9行
第二种:不含任何%% (如上图第三行)
afan
发表于 2011-3-31 21:46:13
回复 19# feicuiboy
晕,1种格式?至少有3种格式吧~! 仔细看看我18#写的,除了“文字%$xx*2%文字 --- 其它运算符如*/”这种没有,其它都猜到了……
feicuiboy
发表于 2011-3-31 21:51:09
本帖最后由 feicuiboy 于 2011-3-31 22:00 编辑
回复 20# afan
我在归纳一下
第一种 :字符或文字+%%+字符或文字
第二种:多个 字符或文字+%%+字符或文字组成一行,但是每个之间有逗号 分开:
第三种:没有任何计算 不含%%
这样归纳OK吗?大大 {:face (332):}
我的思路:
对于第三种,函数可以先检测有无%%,没有则直接输出。
对于第二种和第一种,先读取出字段(不计算),然后循环用变量替换%%之间的计算结果,连接一起输出就是结果
afan
发表于 2011-3-31 21:55:21
回复 21# feicuiboy
不是说的这种格式,而是 %xxx% 之前的不同格式……
feicuiboy
发表于 2011-3-31 22:05:35
本帖最后由 feicuiboy 于 2011-3-31 22:10 编辑
回复 22# afan
文字%$xx-2%文字-----------
文字%$xx*2%文字 --- 其它运算符如*/((存在这种情况,含加减乘除中的一种)
文字%$xx-2%文字 --- 不是数组(存在这种情况)
文字%$xx%文字 --- 没有运算(存在这种情况)
也就是%%之间有加减乘除计算(加减的情况比较多,乘除的情况比较少),%%之间的变量是数组或非数组(若不好实现,就全用数组也可以)
afan
发表于 2011-3-31 22:09:47
如我所述,很麻烦。因为你用了数组做变量,而且有些又不是数组。
feicuiboy
发表于 2011-3-31 22:11:47
本帖最后由 feicuiboy 于 2011-3-31 22:14 编辑
回复 24# afan
全用数组,不用非数组,这样会不会好些?
这个是您写的第一版,也是数组的Dim $xx, $ini = "配置.ini"
$xx = IniRead($ini, "尺寸", "B1", "")
$xx = IniRead($ini, "尺寸", "B2", "")
$AA = IniRead($ini, "零件通用信息", "A3", "")
MsgBox(0, '', _Execute($AA, 1) & @LF & _Execute($AA, 2))
Func _Execute($s_ini, $x)
Local $sR = StringRegExp($s_ini, '%\$(.+?)\[(\d+)\]%([+-])(\d+(?:\.\d+)?)', 3)
If @error Then Return SetError(1, 0, '')
If Not IsDeclared($sR) Then Return SetError(2, 0, '')
Local $tmp = Eval($sR)
If $x = 1 Then Return Execute($tmp[$sR] & $sR & $sR)
If UBound($sR) <> 8 Then Return SetError(3, 0, '')
$tmp = Eval($sR)
Return Execute($tmp[$sR] & $sR & $sR)
EndFunc ;==>_Execute
afan
发表于 2011-3-31 22:13:37
回复 25# feicuiboy
反了,不用数组最好~
afan
发表于 2011-3-31 22:18:24
回复 25# feicuiboy
那是仅针对一种情况的,混搭就很麻烦。
如果你的变量是自己赋值的,那就不如用非数组变量,比如 $xx_1 , $xx_2 ...
feicuiboy
发表于 2011-3-31 22:21:47
我把我文件的源代码附上,你看下--稍后
afan
发表于 2011-3-31 22:24:17
回复 28# feicuiboy
不用了,看那些东西麻烦,我没时间~
feicuiboy
发表于 2011-3-31 22:38:39
回复 29# afan
用非数组的变量,两个问题
第一个:图
第二个 正则。。。。
{:face (270):}