2010-07-07 21 views
12

Ich benutze Delphi 1 16-Bit, um Pascal zu lernen (nicht lachen, es funktioniert gut, und ich kann mir eine neuere Version nicht leisten). Ich verwende eine TList, um Objektreferenzen für ein einfaches Adressbuch zu halten. Jedes Objekt wird wie so zum TList hinzugefügt:Muss ich diese Objekte freigeben?

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

Muss ich die TAddrBookData Objekte selbst befreien? Oder werden sie freigegeben, wenn TList.Free ausgeführt wird?

+0

Willkommen bei StackOverflow, Frank_M! Gute Frage. Ich werde nicht lachen, aber ich werde dich warnen. 64-Bit-Windows wird jeden Tag beliebter und 16-Bit-Anwendungen werden nicht darauf ausgeführt. Wenn Sie sich eine moderne Version nicht leisten können, sehen Sie, ob Sie irgendwo eine gebrauchte Kopie von Delphi 7 finden können. Es hat eine ganze Reihe von Verbesserungen gegenüber Delphi 1. –

+0

Delphi 1 ist kein guter Ausgangspunkt, um OOP zu lernen. Es ist in Ordnung, wenn Sie Grundlagen lernen wollen, aber es ist in Bezug auf moderne Technologien wirklich veraltet. Wenn Sie moderne OOP- und Programmiertechniken erlernen möchten, empfehle ich C#, es gibt eine freie IDE dafür: http://www.microsoft.com/express/Downloads/#2010-Visual-CS. C# wurde von ex-delphi architect entworfen, daher hat es alles Gute genommen. – Andrey

+9

Wenn Sie sich jedoch für Delphi entscheiden, sollten Sie nach Delphi 7 Personal suchen, das auf den Borland/CodeGear/Embarcadero-Websites entfernt wurde, aber immer noch auf einigen Spiegelhostern verfügbar ist. Ich glaube, es ist legal, das zu verwenden, wie es einmal als Freeware veröffentlicht wurde. – migajek

Antwort

12

Sie müssen sie selbst befreien. Spätere Versionen kommen mit einer TObjectList, die wie eine TList ist, außer dass sie nur Objekte akzeptiert und es die Option hat, Besitz zu übernehmen und sie automatisch für Sie freizugeben, wenn die Liste freigegeben wird. Aber ich glaube nicht, dass TObjectList in Delphi 1 existiert, also musst du dich manuell darum kümmern.

+0

Sie haben Recht, 'TObjectList' existiert nicht in Delphi 1. – Nat

+4

... was eine fantastische * Lern ​​* -Möglichkeit ist ... eine TList zu erstellen und dann eine Erweiterung (abgeleitete Klasse) zu entwerfen, um einen TObject-Typ-Safe bereitzustellen Container mit Inhaltsbesitz-Semantik. Sie werden viel mehr lernen, wenn Sie eine solche Klasse entwickeln, als wenn Sie einfach eine bereits vorhandene verwenden. – Deltics

8

Sie müssen (oder FreeAndNil) diese ebenfalls befreien.

Wenn Sie Object Pascal (Delphi) mit einer neueren (und kostenlosen) IDE lernen möchten, versuchen Sie Lazarus, da das kostenlose Turbo Delphi 2006 eingestellt wurde (was für ein schlechter Zug).

+5

sehr, sehr schlechter Zug, ja :( – migajek

+0

'FreeAndNil()' nicht 1 in Delphi vorhanden war (ich weiß, Ich muss es immer noch verwenden 16 Bit Code). Aber Sie können Ihre eigenen schreiben. – Nat

+0

Nicht zu schwer in der Tat zu implementieren :) Delphi 1 scheint so weit weg ... Ich habe eine versiegelte Box von Delphi 1 zu Hause, dass ich behalte als Sammler hehehe. – AlexV

Verwandte Themen