西门子300遍历db的方法
郑志武
发布于2013-01-18 00:24
387
0
标签:
一个db块,里面有36个int型变量,每个变量都被打乱顺序的赋予1-36的数值,没有重复。我要做的是把db中的每个变量取出来和1比较,如果相同,那么输出动作然后跳出循环,如果不同,则比较下一个变量是否值为1,以此类推,那么多就需要比较36次。
第二遍则是把db中的36个变量分别和数字2比较,如果等于2,则跳出循环,如果不是2,则比较第2个变量,以此类推。多就需要比较36次。
后一遍是找出db中值为36的那个变量。
综上,比较的次数在36*36以内。/p>
佳答案
你比较等于2~等于36的结果怎么做呢?也是输出一个动作?还是输出同一个动作?那么你这个程序的意义是什么呢?用指针加循环,一个扫描周期就解决了,那么你能看出来什么呢?把你的这个比较的意义说清楚再说怎么做程序吧!
tar1#temp_ar1
tar2#temp_ar2
lp##db_no
lar1
lw[ar1,p#0.0]
t#db_id
opndb[#db_id]
////////////////////////////////
l36
_0a1:t#jishu
lar1p#0.0
tar1#ar1data1
l1
t#cycle_count
_0a2:l#jishu
ldbw[#ar1data1]
==i
jcend
lar1#ar1data1
+ar1p#2.0
tar1#ar1data1
l1
l#cycle_count
+i
t#cycle_count
l36
>i
jc_0a3
loop_0a2
_0a3:l#jishu
loop_0a1
juend1
///////////////////////////
end:s#out1
end1:nop0
//////////////////////////
set
save
beu
先比较等36然后比较等于35,然后比较等于34..........后比较等于1,只要比较36*36次有相等的就输出一个bool量。不过你的输入输入方式肯定造成我的这个程序输出为1,不知道你要这样的程序干什么。