这个例子昨天正好看了,话说那本书的例子都很不错~
2 h/ O3 Z3 p: ~* M0 H, D* w( a4 d+ b不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
- f& E$ T5 Q9 Q' w/ lis
T# B3 H9 {+ j# y, k3 ` i,no,m:integer; --定义整型
" z, `3 _; m/ L# w9 K Buf:object; --定义object
; Y& X. J- M1 e) K3 Q& T) Zdo" P4 z0 Q- d( K6 t
m:=0;" C+ u d" _3 d' @6 N. X
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
2 ?/ O$ _5 b( \* U7 }0 c for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行) Y Q! d8 p; Y2 D, [
if PartsNo=m and no<=PartsNo+PartsTable[2,i] then 8 Q O3 K4 z7 ?+ C7 `
@._From:=PartsTable[5,i];
2 i4 K( l, K1 Y% b5 C& Q1 u @._To:=PartsTable[6,i];
4 ]3 Y( @/ p' c+ n h5 s7 I8 B if no=PartsNo+PartsTable[2,i] then 5 E, i R9 W' Z7 r% C
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
4 }. _- S) l, [# {( `, z0 a6 p$ F+ C, t7 \9 m5 V
end;) |" q8 H" e5 a! D* g
i:=PartsTable.YDim+1;' ]3 f; B8 z% C% u+ v
end;7 E" H; [ P) {* e! K
m:=m+PartsTable[2,i];
9 b0 G, t+ ?; r' Q4 L# \ next;9 q* G" D5 V) Q# b, w
0 e6 D `5 A# }
Buf:=str_to_obj(sprint("BF",@._From));
, v( q* }2 c8 u# b: ?/ b+ v% I @.move(Buf);
1 V) v& {* Z, Q" `& M6 mend; |