这个例子昨天正好看了,话说那本书的例子都很不错~' i4 F% B) N* X& T7 N
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
* h: [" v2 @1 {: g5 W1 [# w ~" G7 zis
( t; N& i6 m3 e5 i i,no,m:integer; --定义整型
4 m: E! s! T, r& @9 i& p" H Buf:object; --定义object
* q8 e4 P. _0 `1 |1 L' q0 Gdo
/ U" P3 O. M) W8 O* S8 H2 m m:=0;) t- n O$ F$ T8 p: E1 V
no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
. _/ ]* m9 w; ?% o% |3 ` for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行3 p6 k0 |8 d. l5 h- ]8 O
if PartsNo=m and no<=PartsNo+PartsTable[2,i] then 6 K J, B8 T8 J
@._From:=PartsTable[5,i];
, F% D+ q4 Q# V, I# m" B @._To:=PartsTable[6,i];
/ k" q6 J: z! R9 L `) i if no=PartsNo+PartsTable[2,i] then
2 [# j. ~8 m& n PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
5 V) {. V. z8 H# i7 L% Y: ~- l% n, I1 q0 f' \6 [( w* p
end;4 G6 w0 o1 o+ H9 D' [9 P! e5 R2 t
i:=PartsTable.YDim+1;* b( l3 k( B q& \# T
end;2 Z- Z4 \$ @5 A% ^8 x1 i
m:=m+PartsTable[2,i]; Q) r5 l, \) T3 k/ T* C
next;7 y- A4 V, v# i5 b' }
, F$ J; _- Z) c9 f0 \
Buf:=str_to_obj(sprint("BF",@._From));6 r% G: g R, d, h% y! I
@.move(Buf);( z+ u* O9 M* V: O
end; |