这个例子昨天正好看了,话说那本书的例子都很不错~
+ |7 l# ?5 b* W0 M9 J不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
# I2 J* n/ m0 y' w. jis
6 m- o! C5 }3 u* h1 }$ w$ W- \ i,no,m:integer; --定义整型4 a0 L6 b+ c1 ~+ @' d4 T; l
Buf:object; --定义object
" L+ O0 Q) ^; d3 H2 I6 udo+ P/ m/ k- _3 Z+ P4 q
m:=0;
) i; i, N" J* A/ c- c& _* d no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)1 g: m$ m# s0 |- e+ X4 d8 z2 K2 n
for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
( [) L0 N3 @- p0 y6 B7 L5 I if PartsNo=m and no<=PartsNo+PartsTable[2,i] then 1 c4 _ A+ o+ ~3 k
@._From:=PartsTable[5,i];
- `! J8 ?0 I6 K# h @._To:=PartsTable[6,i];
: N) I% t% G4 ^ if no=PartsNo+PartsTable[2,i] then
# Z: G- j2 m" V/ ^; v: T1 C, G PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
8 A' X( D ^/ x( U9 B5 w J! u2 F' d1 S$ F6 Z8 o% q
end;
2 e" Y' d7 d( W. U6 q: n6 x' X0 E i:=PartsTable.YDim+1;. P0 D0 o0 u! F& S, k
end;' c% }8 L, G! ] s" A# |3 P. S q5 B
m:=m+PartsTable[2,i];/ k6 ?" a: s! j
next;
+ c- B$ h/ s0 S* z" w4 O * l- B3 p7 z1 V
Buf:=str_to_obj(sprint("BF",@._From));, `* e! B" H# X+ v
@.move(Buf);$ S7 f0 ]. _: a% W: D: b1 Q
end; |