我定义了一个TStack的对象,在程序中想使用它,却发现有以下问题:var
mystack:TStack;
index:Integer;
temp:^Integer;begin
mystack.Create;
index:=0;
mystack.push(@index);
index:=100;
mystack.push(@index);
index:=20;
temp:=mystack.pop;
Showmessage(Inttostr(temp^));//此处应该显示100,但是我看到的是20?
temp:=mystack.pop;
Showmessage(Inttostr(temp^));
//此处应该显示0,但是我看到的仍然是100!?
此外:如果我要将一个TreeNode压栈,该如何操作!!
end;
mystack:TStack;
index:Integer;
temp:^Integer;begin
mystack.Create;
index:=0;
mystack.push(@index);
index:=100;
mystack.push(@index);
index:=20;
temp:=mystack.pop;
Showmessage(Inttostr(temp^));//此处应该显示100,但是我看到的是20?
temp:=mystack.pop;
Showmessage(Inttostr(temp^));
//此处应该显示0,但是我看到的仍然是100!?
此外:如果我要将一个TreeNode压栈,该如何操作!!
end;
解决方案 »
- ocx activex 能编译,但是注册却报错?!
- javascript怎么样实现调用delphi的程序?
- [参数写法]简单sql语句参数写法问题!!!
- 哪位有FastReport3序列号?可以告诉我吗,悬尝20分
- 学习Delphi的从入门到成熟的进阶过程?
- 各位大哥,如何判断一个edit输入的内容是否为合法的数字类型,有类似函数么?
- 如何用delphi读、写计算机的串口
- 在sql语句中怎样取得前n条记录,后n条记录?
- 数据库汇总问题
- 如何把一个程序中的主Form转移到另一个程序的某菜单项下?
- 查找一个应用程序是否运行并且结束这个程序
- 我的一个用于计算的BUTTON.ONCLICK事件里有1300条语句,每次点击它计算时,第一次计算的结果根本就不对,只有再次点击它一次,结果才计算
var
tmp:TStack;
begin
tmp:=Tstack.Create ;
tmp.Push(pchar('cc'));
tmp.Push(pchar('dd'));
showmessage(pchar(tmp.Pop));
showmessage(pchar(tmp.Pop));
tmp.Free ;
end;
mystack := TStack.Create;1、Showmessage(Inttostr(temp^));//此处应该显示100,但是我看到的是20?
因为TStack保存的是指针,而你的“index:=20;”已经让指针的内容为20了而不是1002、Showmessage(Inttostr(temp^));
//此处应该显示0,但是我看到的仍然是100!?
此处还是20而不是100也不是0。因为你Push的都是@index,指针指向同一个数据index。而你已经让:index:=20。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————