TokenRec = record
State: Byte;
Value: Extended;
FuncName: string;
end;
TfrmEveryDayPay = class(TForm)
public
Stack: array of TokenRec;
procedure BizFormCreate(Sender: TObject);
{public declarations}
procedure Pop(var Token: TokenRec);
end;
implementation
procedure TfrmEveryDayPay.BizFormCreate(Sender: TObject);
var
o: TokenRec;
begin
SetLength(Stack, 15);
o.Value := 10;
o.State := 0;
Stack[2] := o;
end;
procedure TfrmEveryDayPay.Button3Click(Sender: TObject);
var
o: TokenRec;
begin
Pop(o);
end;
procedure TfrmEveryDayPay.Pop(var Token: TokenRec);
{ Pops the top Token off of the stack }
var
i: Integer;
begin
i := 2;
Token := Stack; //在这行出错。错误信息为:List index out of bounds(17) 类型EListError
Dec(i);
end; { Pop }
procedure TfrmEveryDayPay.Pop(var Token: TokenRec); 这行如果我改成
procedure TfrmEveryDayPay.Pop(: TokenRec); 就没有问题了。
{ Pops the top Token off of the stack }
var
i: Integer;
begin
i := 2;
Token := Stack;
Dec(i);
end; { Pop }