这个例子昨天正好看了,话说那本书的例子都很不错~2 f; ?% W0 T+ d0 M: i5 `, g. l1 R
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
) `6 S. W& ?$ Ois; j- O ^/ o# D6 k
i,no,m:integer; --定义整型
7 \8 g1 t4 j; ] e8 S5 K Buf:object; --定义object
, l9 c- j/ W- E6 ~do( [) s+ ]5 [6 E) J2 B, d
m:=0;/ @8 x7 i- j1 H/ q
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
0 W: E' a: I3 @2 |2 a$ C& P, ~, G for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
+ r1 L6 f. }: F$ Y+ P9 s, q' Q if PartsNo=m and no<=PartsNo+PartsTable[2,i] then ( @6 n' N; i5 }8 V% {" X9 [5 Z
@._From:=PartsTable[5,i];
1 z W! T Y% K# E6 h6 H1 W+ X @._To:=PartsTable[6,i];5 @+ ?& ~5 e: h+ c- `# B+ @! [
if no=PartsNo+PartsTable[2,i] then 3 _$ s& K V0 E+ z @5 ]
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
( k$ r5 b$ n X4 I
7 z/ P4 H9 ]& R, @* p end;$ E6 a1 \' ~7 y9 c5 R# ^' Z
i:=PartsTable.YDim+1;+ K( Z/ {8 [+ J7 L. |# z+ _
end;
) W& }0 Z* J* Z7 ~% j0 z9 P& V- g m:=m+PartsTable[2,i];
. `( U% |+ U1 H+ ]/ ^$ R next;) Z4 X( k* X/ x- f
/ f; @, F) ~" x9 }0 @ Buf:=str_to_obj(sprint("BF",@._From));
4 P' |% r( l5 d( R0 a' D1 q @.move(Buf);
L( M0 ^$ p- K$ D. _end; |