这个例子昨天正好看了,话说那本书的例子都很不错~0 k. J. J2 J2 H! [3 m+ b# X
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。8 v! L" |) Q8 @ i1 X6 y
is n+ Z" M7 R# C# A. R4 O
i,no,m:integer; --定义整型
0 a G' t7 p; f& R0 Y, g6 s% N Buf:object; --定义object' h% C2 p6 s: o
do+ ^! j6 a+ n$ ^; ~0 g n* R' r
m:=0;
* S8 _. }; L3 w no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)
1 u9 s7 W) R2 Z6 r$ `: P, S for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
, i8 d) |# b. B) x4 r if PartsNo=m and no<=PartsNo+PartsTable[2,i] then
/ W1 M( U4 F, v# ~8 P' i/ Z8 o; j @._From:=PartsTable[5,i];
+ x4 o9 c, Q& O e! K( K; t @._To:=PartsTable[6,i];
5 Z& W8 N1 U. c2 k4 n& g if no=PartsNo+PartsTable[2,i] then
5 T4 }9 V. U' | r" n3 B: R0 H( x PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去), Z" q6 h6 e7 U* V* q
3 s( o4 R7 E; j+ B end;" [. `8 j0 z' e6 ?: n: Y
i:=PartsTable.YDim+1;0 a0 H" h& ]! s
end;
: i M+ Y' N( \) M+ X+ j; J m:=m+PartsTable[2,i];' n# d4 G! p) Z$ T+ Q
next;
, c# H/ b+ k0 [& i% `: \* m6 Y
' j7 u2 v8 d% p$ h7 H' ^: t Buf:=str_to_obj(sprint("BF",@._From));
& S% G+ H- A3 C& X1 t8 G, n @.move(Buf);0 ?$ W: `, F" a2 f3 J: _* o2 Z# S
end; |