2010-07-07 10 views
12

Używam Delphi 1 16-bit do nauki Pascala (nie śmiej się, działa dobrze, a nie stać mnie na nowszą wersję). Używam TList do przechowywania odwołań do obiektów dla prostej książki adresowej. Każdy obiekt jest dodawany do TList tak:Czy muszę uwolnić te obiekty?

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

Czy muszę uwolnić TAddrBookData sprzeciwia się? Czy są one uwolnione, gdy TList.Free jest uruchamiany?

+0

Witamy w StackOverflow, Frank_M! Dobre pytanie. Nie będę się śmiał, ale cię ostrzeżę. 64-bitowy system Windows staje się coraz bardziej popularny każdego dnia, a aplikacje 16-bitowe nie będą na nim działać. Jeśli nie możesz sobie pozwolić na nowoczesną wersję, sprawdź, czy nie możesz znaleźć choćby używanej kopii Delphi 7, która gdzieś się unosi. Ma wiele ulepszeń w stosunku do Delphi 1. –

+0

Delphi 1 nie jest dobrym punktem wyjścia do nauki OOP. Jest w porządku, jeśli chcesz nauczyć się podstaw, ale jest naprawdę przestarzały pod względem nowoczesnych technologii. jeśli chcesz nauczyć się nowoczesnych OOP i technologii programowania polecam C#, jest tam darmowe IDE: http://www.microsoft.com/express/Downloads/#2010-Visual-CS. C# został zaprojektowany przez architekta ex delphi, więc wszystko to z niego skorzystało. – Andrey

+9

Jeśli jednak zdecydujesz się na naukę Delphi, możesz poszukać Delphi 7 Personal, która została usunięta z witryn Borland/CodeGear/Embarcadero, ale nadal jest dostępna na niektórych serwerach lustrzanych. Uważam, że używanie tego jest legalne, ponieważ zostało kiedyś opublikowane jako freeware. – migajek

Odpowiedz

12

Musisz je uwolnić samodzielnie. Późniejsze wersje są dostarczane z TObjectList, który jest jak TList, z wyjątkiem tego, że akceptuje tylko obiekty i ma opcję przejęcia własności i uwolnienia ich automatycznie, gdy lista zostanie zwolniona. Ale nie wierzę, że TObjectList istniało w Delphi 1, więc będziesz musiał zająć się nim ręcznie.

+0

Masz rację, 'TObjectList' nie istniało w Delphi 1. – Nat

+4

... co jest fantastyczną * możliwością uczenia się * biorąc TList, a następnie projektując rozszerzenie (klasa pochodna), aby zapewnić bezpieczeństwo typu TObject kontener z semantyką własności treści. Dowiesz się znacznie więcej, * rozwijając * taką klasę, niż będziesz używał po prostu już dostarczonego. – Deltics

8

Musisz również zwolnić (lub FreeAndNil) również.

Jeśli chcesz się nauczyć Object Pascal (Delphi) z nowszym (i bezpłatnym) IDE, spróbuj Lazarus, ponieważ darmowy Turbo Delphi 2006 został przerwany (co jest złym posunięciem).

+5

bardzo, bardzo złe posunięcie, rzeczywiście :( – migajek

+0

'używaniem FreeAndNIL()' nie istnieje w Delphi 1 (wiem, Nadal muszę używać go, utrzymuję kod 16-bitowy), ale możesz napisać własny. – Nat

+0

Niezbyt trudne do wdrożenia :) Delphi 1 wydaje się tak daleko ... Mam zapieczętowane pudełko Delphi 1 w domu, które mam zachowaj jako hehehe kolekcjonera. – AlexV

Powiązane problemy