2010-07-07 133 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

相關問題