2010-07-07 86 views
12

我使用德尔福1位16位学习帕斯卡尔(不要笑,它工作正常,加上我买不起更新的版本)。我正在使用TList来保存简单地址簿的对象引用。每个对象都添加到从TList像这样:我是否需要释放这些对象?

DataList.Add(TAddrBookData.Create('Bob', '1 Mill St')); 

我需要释放TAddrBookData对象自己?或者当TList.Free运行时它们被释放了吗?

+0

欢迎来到StackOverflow,Frank_M!好问题。我不会笑,但我会警告你。 64位Windows每天都变得越来越流行,并且16位应用程序无法在其上运行。如果你买不起一个现代版本,看看你是否至少能找到一个Delphi 7的旧版本在某个地方浮动。 Delphi 1有很多增强功能。 – 2010-07-07 12:31:30

+0

Delphi 1并不是学习OOP的好开始。如果你想学习基础知识,那很好,但在现代技术方面它确实过时了。如果你想学习现代的OOP和编程技术,我推荐C#,它有免费的IDE:http://www.microsoft.com/express/Downloads/#2010-Visual-CS。 C#是由ex delphi架构师设计的,所以它从中受益良多。 – Andrey 2010-07-07 12:36:00

+9

如果您决定学习Delphi,您可能需要查找从Borland/CodeGear/Embarcadero网站中删除的Delphi 7 Personal,但仍然可以在某些镜像宿主中使用。我认为使用它是合法的,因为它曾经作为免费软件发布过。 – migajek 2010-07-07 12:49:48

回答

12

你需要自己释放它们。后来的版本带有一个TObjectList,它就像一个TList,除了它只会接受对象,并且它可以在列表被释放时自动获取所有权并自动释放它们。但我不相信Delphi 1中存在TObjectList,因此您必须手动处理它。

+0

你是对的,'TObjectList'不存在于Delphi 1中。 – Nat 2010-07-07 12:56:08

+4

...这是一个梦幻般的*学习*机会...带一个TList,然后设计一个扩展(派生类)来提供TObject类型安全具有内容所有权语义的容器。通过*开发*这样的课程,你会学到更多,而不仅仅是使用已经提供的课程。 – Deltics 2010-07-07 21:07:18

8

您还需要释放(或FreeAndNil)。

如果你想用一个更新的(免费的)IDE学习Object Pascal(Delphi),试试Lazarus免费的Turbo Delphi 2006已经停产了(这是一个坏的举动)。

+5

非常非常不好的举动,的确:( – migajek 2010-07-07 12:50:42

+0

FreeAndNil()'在Delphi 1中不存在(我知道,我仍然需要使用它来维护16位代码)但是你可以编写自己的代码 – Nat 2010-07-07 12:54:32

+0

确实不难实现:) Delphi 1似乎很遥远......我在家里有一个密封的Delphi 1盒子,保持收集者hehehe。 – AlexV 2010-07-07 13:21:26

相关问题