这个例子昨天正好看了,话说那本书的例子都很不错~1 R7 m; x' }; y e7 c5 N+ z
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
6 K: R! w( E+ W; }& P4 Fis
; t+ z. z4 p% ^+ T; P% _ i,no,m:integer; --定义整型9 b! y f' W( {& X$ ]
Buf:object; --定义object
' o) ?& ]& S4 E. Y, ^- R! udo
( n% o- a7 A1 D* J m:=0;$ F- q6 }+ c. j* l2 k" | J: m
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
2 u% @1 l6 I1 i for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
* S& |& _' B/ P- S. g# [8 f4 c if PartsNo=m and no<=PartsNo+PartsTable[2,i] then
+ ~; Z" H2 D) ]8 s1 P- j: | @._From:=PartsTable[5,i];
+ U: P p& q3 ]! [; v. P* M' J! Z/ N, y @._To:=PartsTable[6,i];& _( u% Z7 {3 e
if no=PartsNo+PartsTable[2,i] then ( E* M* e& z! ?! T& e, y- ~
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
% N: W6 m6 t- z0 R, O2 L4 e
) j0 Z" f% X" a4 M0 K% }5 H. C* D" g$ Y end;
8 X' M0 C0 l# p8 |8 A, L i:=PartsTable.YDim+1;
7 D$ s9 s. m, s" A0 x end;% l2 s' y1 @, e/ O/ V# h4 s" |
m:=m+PartsTable[2,i];6 t# V2 |# F6 `& m s" V
next;
4 P3 q0 u2 [7 j. T. i + _! Y0 E9 D% n" s; m% `' I
Buf:=str_to_obj(sprint("BF",@._From));1 q1 k& k& E) C, X0 t6 c# o3 C8 `7 T0 Z
@.move(Buf);9 L4 G+ C( w" Z. r' M
end; |