这个例子昨天正好看了,话说那本书的例子都很不错~
% E' a; F9 ~) T0 v c+ H% T* D不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。( R" X& J! ~/ M: f9 _
is
4 ~7 ^( R9 u$ `) Q) u4 C4 x! b i,no,m:integer; --定义整型
# R5 J [$ Q2 U8 g Buf:object; --定义object' w4 d: X4 `5 {: A
do
0 z$ u2 H# Z5 Z1 T+ e6 ~/ c m:=0;! E2 m' _; n3 h9 M
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
, Y9 ]9 M' {$ N" |7 ^ for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行; i( i9 i) S3 M, X$ H
if PartsNo=m and no<=PartsNo+PartsTable[2,i] then
+ B$ Z! ?; S1 K( k @._From:=PartsTable[5,i]; ; ^9 o: Y, z. D* O8 G
@._To:=PartsTable[6,i];9 x' b f$ O' I. k ~; F, e
if no=PartsNo+PartsTable[2,i] then ) X% Q3 A& \8 X1 H0 |' z; \+ p7 ?
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
1 @: J4 `( _; f( b7 x$ I' H0 U& v/ N4 ?, z4 h& A
end;
4 x( } F' w3 s4 \: @# C i:=PartsTable.YDim+1;
( Z/ O! m3 s9 b" E6 Z( R end;
& z0 Y/ X% a* n! z: M# s, o [1 K m:=m+PartsTable[2,i];
R, {6 t; `* p# ~4 F/ c, t next;3 y- N: j& D+ u2 T% l
r6 K. \+ v- }! y Buf:=str_to_obj(sprint("BF",@._From));4 z0 u' n. j$ z. w" k
@.move(Buf);
, x6 s. ^0 Z( _" p: V7 p2 d; a2 ^end; |