这个例子昨天正好看了,话说那本书的例子都很不错~, d- l3 I: I% q+ F1 M+ ], L
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
8 z6 }6 H( s3 v, Y5 Mis- | {; u) e) Z* @* w& F
i,no,m:integer; --定义整型4 n" t$ d6 g/ W0 H" }/ _* j( F
Buf:object; --定义object0 E8 p! D6 h) c' v6 }
do
( z2 o$ w0 r. p f9 ~' _5 R: b m:=0;
7 D" @9 E6 P7 H$ ?3 Q# v$ z D no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)8 p* s; L @5 v9 B
for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
. I$ h& E. H0 L3 e1 ^4 @* ` if PartsNo=m and no<=PartsNo+PartsTable[2,i] then : b0 G) b# U: y% W3 p* ]/ W) U
@._From:=PartsTable[5,i]; / J3 c9 [4 U! y4 g# Z. @
@._To:=PartsTable[6,i];
* B& _) H/ ^* q2 X3 R if no=PartsNo+PartsTable[2,i] then
0 V' F% V! p9 l PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
8 x8 E( e3 q: w4 ~
1 d F9 _6 V, @( H end;4 t' N7 R' y) G6 }7 t* p' } j! B
i:=PartsTable.YDim+1;
6 X! E) j5 I: [ end;$ J( ]% J( h, j: a9 j, m, q
m:=m+PartsTable[2,i];
; ^5 Y+ {. n8 x next;- |1 B' j6 f1 Z8 I
, ?* p& g* n; ?' w
Buf:=str_to_obj(sprint("BF",@._From));
6 z5 y) l u" d6 T: T. Y @.move(Buf);
, f" M, k5 Y0 N. Yend; |