TStrings如何用AddObject一个string 我用mystrings.AddObject('1',TObject(pchar('hello')));,然后再ShowMessage(String(pchar(mystrings.Objects[0])));时出错,如何正确AddObject一个string? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 奇怪了,用TStrings.Add,Insert...不可以啊? 你要确保你再次调用mystrings.Objects[0]的时候,原来'hello'分配的内存没有被释放,否则肯定会出错的。mystrings.Objects[0]记录的只是一个指针。 var pstr :PString;begin New(pstr); pstr^ := 'Hello'; MyStrings.AddObjects('1', TObject(pstr)); ShowMessage(PString(MyStrings.Objects[0])^); Dispose(pstr);end; procedure TForm1.Button2Click(Sender: TObject);var Strings: TStrings;begin Strings := TStringList.Create; Strings.AddObject('1',TObject(pchar('hello'))); ShowMessage(String(pchar(Strings.Objects[0]))); Strings.Free;end;我按照你的方法试了,没能问题,应该是Strings的创建出了问题,要用TStringList创建 上面 Linux2001(恋人不如自恋) ( )和lovestl(天上明月光,地上心慌慌) ( ) 的写法在同一过程中的局部调用没有问题,但在其他地方调用肯定会出错的。还是我上面说的,要确保调用mystrings.Objects[0]的时候,原来'hello'分配的内存没有被释放。两个方法,一,是把字符串定义成全局变量;二,定义为PChar型,用getmem或allocmem在堆里分配内存,用完自己释放。 呵呵, 直接使用Delphi的String类型直接赋值呢 ,我都是这么使用的. 不存在地址被释放的问题. 系统自动维护应用计数 排序 有人说我倒分.马上要死了.散掉所有分.(2) 如何能固定数据库记录的位置? (unsigned char *)"0917" 这一句c++ 如何用DELPHI表示 为找寻一面之缘的 MM, 欲求所有苏州高校的开学日期 -- 犬犬(心帆) 谁能帮我呢? 循环的问题? 简单的问题,紧急求救! 怎样判断OCX控件是否注册!(up有分) 如何制作音效的柱壮图,多谢赐教 怎么传值?比如单击DBGRID中的一个COLUMN就可以把值传到一张报表的QRDBTEXT上 关于Word 文档的问题(从数据库中读出文件存到磁盘上为什么会乱码)
pstr :PString;
begin
New(pstr);
pstr^ := 'Hello';
MyStrings.AddObjects('1', TObject(pstr));
ShowMessage(PString(MyStrings.Objects[0])^);
Dispose(pstr);
end;
var
Strings: TStrings;
begin
Strings := TStringList.Create;
Strings.AddObject('1',TObject(pchar('hello')));
ShowMessage(String(pchar(Strings.Objects[0])));
Strings.Free;
end;我按照你的方法试了,没能问题,应该是Strings的创建出了问题,要用TStringList创建