这个例子昨天正好看了,话说那本书的例子都很不错~
& }& o( w0 Y' {6 E不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
' A' r3 N. |, z! w0 Nis. m/ _0 u+ R3 T/ S( Z. \
i,no,m:integer; --定义整型' W0 E7 }/ H5 P+ G% k" _
Buf:object; --定义object
1 ?. c, r6 Q, R$ Mdo
# O5 Y. _7 w9 p! d3 @ m:=0;! a- A1 G( P( L1 _, ^
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)5 c$ ]& S. k$ f$ h7 R4 V
for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
7 H0 ~. X. @2 _9 d8 M+ ~6 A if PartsNo=m and no<=PartsNo+PartsTable[2,i] then ) [/ o; k5 Y+ J. c- `
@._From:=PartsTable[5,i]; ! p/ R+ l$ i. o8 T1 E
@._To:=PartsTable[6,i];% k/ L) {6 U2 J6 B1 r E
if no=PartsNo+PartsTable[2,i] then ( ?5 y7 T+ e" i6 a6 z, N
PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)% _ d" `$ N% Z# E+ S4 A; Z
5 z% \* D$ S* G9 {
end;; a8 B6 u& J, x, l
i:=PartsTable.YDim+1;
% I1 u% D4 F$ r2 ^ end;9 k! P" G2 F5 `" N
m:=m+PartsTable[2,i];
3 r9 U k0 d5 Y; ~4 | next;
# n$ \. I4 S$ z! F
$ D) U2 ]2 Q( j k* _; u! D; c Buf:=str_to_obj(sprint("BF",@._From));
/ R0 ?3 {6 E" n4 ~ @.move(Buf);; Y/ z, R0 y5 z' E0 c+ c. K
end; |