procedure TForm1.Button1Click(Sender: TObject);
var tmp1:string;
tmp2:^string ;
begin
new(tmp2);
tmp1 := '1';
tmp2 ^:= 'abc';
CbBox1.Items.AddObject(tmp1,TObject(tmp2^));
end;procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to CbBox1.Items.Count-1 do
if CbBox1.Items.Objects[i]<>nil then
begin
Dispose(pstring(CbBox1.Items.Objects[i]));
end;
end;
上述语句中,一执行到Dispose就出错,怎么回事???
var tmp1:string;
tmp2:^string ;
begin
new(tmp2);
tmp1 := '1';
tmp2 ^:= 'abc';
CbBox1.Items.AddObject(tmp1,TObject(tmp2^));
end;procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to CbBox1.Items.Count-1 do
if CbBox1.Items.Objects[i]<>nil then
begin
Dispose(pstring(CbBox1.Items.Objects[i]));
end;
end;
上述语句中,一执行到Dispose就出错,怎么回事???
解决方案 »
- atoi函数的功能在delphi中如何实现呢?
- 利用ArcGIS和Delphi开发的问题
- 100分!!请教在DBGrid上对选中的任意行加一个标记(像Mail中标记要删除的邮件一样)的思路
- 请问 TClientSocket 控件如何加载,Delphi7?
- 请教非数据组件操作数据的问题?
- 帮帮忙,先谢过了
- 国耻签名活动,请版主置顶!!!!!!!-----我的心真的很痛
- 请问如何使用InstallShield Express - Borland Limited Edition
- 使用idudpserver和idudpclient编写的程序出现奇怪问题,请高手指点
- 从IE拖动一个超链接到窗口时怎么得到此链接的文字,我只能得到地址.
- 请问关于打开对话框文件多选的问题
- 求一段简单的语句的解释
FreeAndNil(CbBox1.Items.Objects[i]);
var i:integer;
o:Tobject;
begin
for i:=0 to CbBox1.Properties.Items.Count-1 do
begin
o := CbBox1.Properties.Items.Objects[i];
FreeAndNil(o);
end;
end;
FreeAndNil(o);还是出现错误
if CbBox1.Items.Objects[i]<>nil then
begin
Dispose(Pointer(CbBox1.Items.Objects[i]));
end;
Dispose(Pointer(CbBox1.Items.Objects[i]));
CbBox1.Items.AddObject(tmp1,TObject(tmp2));
CbBox1.Items.AddObject(tmp1,TObject(tmp2));
procedure TForm1.Button1Click(Sender: TObject);
var tmp1:string;
tmp2:^string ;
begin
new(tmp2);
tmp1 := '1';
tmp2 ^:= 'abc';
CbBox1.Items.AddObject(tmp1,TObject(tmp2^)); //tmp1为生存期自管理,所以没问题;
//tmp2为指针类型,这时候tmp2失效,而它指向的内存没有释放;
end;
CbBox1.Items.AddObject(tmp1,TObject(tmp2));
to hongqi162(失踪的月亮):
这样添加的话,那如何访问tmp2的值,用如下的语句无法访问(原来用tmp^可以)
string(CbBox1.Items.Objects[CbBox1.ItemIndex]); 多谢
procedure TForm1.Button1Click(Sender: TObject);
var tmp1:string;
tmp2:^string ;
begin
new(tmp2);
tmp1 := '1';
tmp2 ^:= 'abc';
CbBox1.Items.AddObject(tmp1,TObject(tmp2));
end;procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to CbBox1.Items.Count-1 do
if CbBox1.Items.Objects[i]<>nil then
begin
Dispose(pstring(CbBox1.Items.Objects[i]));
end;
end;访问tmp2的值:(pstring(CbBox1.Items.Objects[CbBox1.ItemIndex]))^
散分