这个例子昨天正好看了,话说那本书的例子都很不错~! E" q6 e4 D0 z/ W2 W& {
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。& a7 u+ W& `4 g, N! d: Q
is
# I1 S5 @1 T- N% q. R) N! n7 J i,no,m:integer; --定义整型
! q" n9 |9 C5 {7 h Buf:object; --定义object
' V! d: r3 d6 A( t' s m7 x5 pdo& Y2 M$ u- Y: L$ x) P5 [ R
m:=0;
& a$ `; v; N o. } no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
1 D: y4 L! K. I9 W! q; x for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
, H0 V3 p, e8 G9 g/ n) ^+ x if PartsNo=m and no<=PartsNo+PartsTable[2,i] then 0 _. Y4 F+ P4 w# S* A. b
@._From:=PartsTable[5,i]; : T: ]9 O. a. i ?8 F0 ]
@._To:=PartsTable[6,i];
9 ?- z. O, W$ g if no=PartsNo+PartsTable[2,i] then ; R t7 o# J* U9 o1 }( B V
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
/ G5 n; {% ?% |% V3 c8 k* Z) s7 J4 r$ o0 A W5 Y) @
end;1 |7 h& b! R. t1 W, n
i:=PartsTable.YDim+1;
5 x. p# ^, x6 f8 p2 ^ end;
$ u$ I4 ]4 k) c5 V9 X: F0 ~. B* p m:=m+PartsTable[2,i];- q4 f& | `% m2 ?( V) D
next;# T* k, D' R- B/ S2 i/ h& k
, P7 L/ v+ o6 A) a# B Buf:=str_to_obj(sprint("BF",@._From));
7 V3 Z( }# `0 K! l+ \ @.move(Buf);1 s. x6 O: Q6 o% G( q, Z: e( i% K
end; |