这个例子昨天正好看了,话说那本书的例子都很不错~9 v S! }# |. t
不过你还得把前面的表格看明白了才行,不然我这边解释也不行的。
% ^; j! q* y5 i8 @* M1 qis
1 G8 t) D& a3 B( t# J( ] i,no,m:integer; --定义整型8 L8 w7 S2 n& p+ O$ s `9 R" U5 @
Buf:object; --定义object
5 w, G6 k! G( ]3 k. N0 z& Xdo
6 D# y- Z$ G3 c m:=0;
8 G( G( j. q, T* F* E/ @! [ no:=@.getNo; --拾取进入系统的实体编号(每一个物体系统都会默认的给他一个编号的,出来你自己定义外)7 K2 o; m- m- F3 d
for i:=1 to PartsTable.Ydim loop --YDIm就是指这个表格一共多少行
. w2 p& n9 j, } Z, e if PartsNo=m and no<=PartsNo+PartsTable[2,i] then
% Y8 M! M. W! x3 }4 x @._From:=PartsTable[5,i]; - F; ]0 v# O! j1 H7 l! S1 q c
@._To:=PartsTable[6,i];# |( B8 c/ ~( @* L3 e8 z
if no=PartsNo+PartsTable[2,i] then
# p2 \8 R0 m. \ m! V' A7 B. I1 H PartsNo:=PartsNo+PartsTable[2,i]; --这边整个语句实际就是在说,PartsNo就是要运送的数目(表格第二列的都是运送数目),而no与m就是用来辅助不断向下读取表格的数据的(这个逻辑你要自己推敲,说的话可就长了,把数字一个个带进去)
0 A3 R$ o7 N# w, h' m* T
, }0 R. {! Q- R9 I1 l5 u6 c3 _ end;
* R- ?- N' E; F i:=PartsTable.YDim+1;
- A$ @ A! l. l& I, G% b8 _; m end;3 N; b3 d; V2 l7 P% N2 w" l7 ]# Y
m:=m+PartsTable[2,i];# J1 z4 U* p6 L0 a; H: `
next;4 Q7 I7 J" S' K) h/ w# l6 E
4 t. a) P, |, \6 k% F7 X
Buf:=str_to_obj(sprint("BF",@._From));& { B# ?! J% l$ q5 @$ P5 t) C# ^
@.move(Buf);1 p' Z ?" E& }& Q5 Z6 a+ W/ e
end; |