这个例子昨天正好看了,话说那本书的例子都很不错~3 k& h) N# B6 H2 K
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
$ a. j6 y5 y8 K+ l! D: Ois
3 p s+ a2 l* B; v i,no,m:integer; --定义整型
7 u8 l. A/ h2 T* e6 o8 Y! `# ^5 x Buf:object; --定义object
: u6 y) u' K$ n* p% n) b/ {- Jdo
* N, J1 G- N3 M, [, J/ Y( I m:=0;
9 D' _& T0 D3 [7 y' F no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
) [% t( g; f- i" m# q for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
@+ M0 }$ \* `+ k O( e6 R if PartsNo=m and no<=PartsNo+PartsTable[2,i] then
4 i1 g1 h$ D7 M8 Z8 S( t9 u. Q/ I @._From:=PartsTable[5,i];
5 Q2 z% p7 ^7 A7 e. Z$ l7 b, ]8 n- v @._To:=PartsTable[6,i];
$ x( f: J3 g: T+ U6 i& x0 F1 ^4 w7 J if no=PartsNo+PartsTable[2,i] then
, ~ N3 j; d4 |3 t5 I PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
1 K/ L! [0 n/ p0 D( b1 C( O6 j& U, [+ o" ~4 Y+ X" ]$ D1 i% t
end;
$ l* N% _# p5 L i:=PartsTable.YDim+1;8 S. u: m, i1 N& c, j8 Y
end;7 {/ q0 z x/ z( {6 X
m:=m+PartsTable[2,i];
j$ s; i) j& w' e- b/ K% f next;
z$ \) n9 H- \; e& t& c
* M! t/ ~+ W3 Y; { Buf:=str_to_obj(sprint("BF",@._From));
8 v) l5 N, F0 m o9 e5 v8 r @.move(Buf);
! U0 ?: n. E) L' h0 n6 K' _9 B- Mend; |