这个例子昨天正好看了,话说那本书的例子都很不错~ n( D, e1 q4 m2 G; x& C5 E
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
; ~: l& j2 ?" Q4 n8 F8 Bis3 \9 }/ N4 L; o( e7 Z# [
i,no,m:integer; --定义整型) w k2 c& h# B2 B, a' \
Buf:object; --定义object9 E9 T4 N4 O( h {
do, [) e# I1 l% f2 m3 `
m:=0;# [ p7 y3 P% _3 u
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
) z3 S7 n0 i9 j% G" B* X for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
/ {8 [& M* L) r0 e if PartsNo=m and no<=PartsNo+PartsTable[2,i] then ! P' s2 p/ ]8 c! U7 D/ B5 i
@._From:=PartsTable[5,i];
* b% v. c* n( ?5 ? ? @._To:=PartsTable[6,i];7 V/ S: z1 S& k, W: C, e+ \: j. H
if no=PartsNo+PartsTable[2,i] then + L3 _% l* [) w
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
" f. H( e5 t! H0 R3 K& `: B
3 u, c, H& T) u- e; C end;( M) d& l2 C+ G7 X6 l: n. K T
i:=PartsTable.YDim+1;
/ z# \0 F) Q, h2 O5 J0 W end;0 k" n4 t; L9 K
m:=m+PartsTable[2,i];, a& n# e) C1 {0 o' Q' s
next;
% _. G$ N2 M% N3 E7 Z I/ [9 E
% F/ Z7 V0 a) D) x# Z7 g Buf:=str_to_obj(sprint("BF",@._From));
3 |8 J ?7 ]4 R {) _; P1 X1 l @.move(Buf);
; w5 t! Z0 P5 Qend; |