各位大哥救命,小M头疼了几天的问题,谢谢!(TstringList与对象操作的问题)

julin365 2003-10-03 07:59:40
我做了一个程序,其中的一部分是要把对象的记录存到列表中,我使用的列表是TStringList,当我用记录类型(record)做的时候能正常运行,程序代码如下:
type
PIDName=^TIDName;
TIDName=record;
ID:string;
Name:string;
end;
procedure createA;
var :
MyList:TstringList;
Data:PIDName;
i:integer;
begin
new (Data)
Data^ID:=IntToStr(1);
Data^Name:='黎明';
MyList.AddObject(Data^Name,Pointer(Data));
new (Data)
Data^ID:=IntToStr(2);
Data^Name:='刘德华';
MyList.Move(1,0);
MyList.AddObject(Data^Name,Pointer(Data));
for i:=0 to MyList.cout-1 do
showmessage(PIDName(MyList.Object[i])^.ID);
end;
但是我把记录类型换成对象的时候却不行,代码如下(问题就在这里,编译正常,运行却有错误):
type
PTreeNumber=^TBasicTree//TBasicTree是我定义的一个类
var
PNumber:PTreeNumber;
procedure CreateA;
MyList:TStringList.create;
PNumber^.stringID=1; //stringID,stringName为我定义的字段
PNumber^.StringName:='黎明';
MyList.AddObject(PNumber^.stringName,Pointer(PNumber);
showmessage(PTreeNumber(MyList.Object[0]^.StringID);
我想让我的第二段代码实现象第一段代码一样的功能,必须要用对象的方式实现,各位大哥,救命啊!!谢谢!!谢谢!!





...全文
19 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2003-10-04
  • 打赏
  • 举报
回复
是类的话就不用这样定义了
//type
// PTreeNumber=^TBasicTree//TBasicTree是我定义的一个类
var
Number:TBasicTree;//这已经是一个指针了
procedure CreateA;
MyList:TStringList.create;
Number:=TBasicTree.Create;
Number.stringID=1; //stringID,stringName为我定义的字段
Number.StringName:='黎明';
MyList.AddObject(Number.stringName,Pointer(Number);
showmessage(TBasicTree(MyList.Object[0]).StringID);
//改为以上的就是了
ZyxIp 2003-10-04
  • 打赏
  • 举报
回复
用指针太麻烦,不如这样写简单明了
TMyClass=Class
private

public

published
Property Name:String Read FName Write FName;
end;
var
TempList:TList;
MyClass:TMyClass;
begin
TempList:=TList.Create;
MyClass:=TMyClass.Create;
TempList.Add(MyClass);
end;

end;
halfdream 2003-10-04
  • 打赏
  • 举报
回复
var
MyList:TStringList;
Number:TBasicTree;

procedure TForm1.CreateA;
begin

MyList:=TStringList.create;
Number:=TBasicTree.create;//不管怎么写,这句都是你需要的。

Number.stringID=1;
Number.StringName:='黎明';
MyList.AddObject(Number.stringName,Number);
showmessage(TBasicTree(MyList.Object[0]).StringID);


end;
halfdream 2003-10-04
  • 打赏
  • 举报
回复
呵,用对象方式比用指针方式书写起来要简单得多。
你问题是出在对象没有创建。

gardenyang 2003-10-03
  • 打赏
  • 举报
回复
不明白你想干什么啊?为什么不用writecomponent?这个现成的操作方法很好用啊?
julin365 2003-10-03
  • 打赏
  • 举报
回复
在线等待!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧