Misteri TObjectList


Kalau kebetulan menggunakan collection TObjectList, pastikan waktu create objectnya memperhatikan parameternya dengan baik. Kalau ingin memusnahkan masing-masing object di array sendiri, pastikan parameter Createnya diisi False. Jangan dibiarkan saja, karena defaultnya True. Kalau True maka asumsinya si TObjectList yang akan memusnahkan masing-masing objectnya. Sehingga kalau kita hanya panggil constructor Create tanpa parameter (which is dianggap kita tidak akan memusnahkan elemen di array secara manual) lalu kita panggil Free untuk TObjectListnya, dia akan upset. Sepertinya banyak programmer yang terjebak di sini. Mungkin desain TObjectList kurang benar. Seharusnya defaultnya bukan True, tetapi False.

Mau lihat contoh kodenya? Coba tengok di sini.

Untuk constructornya sendiri di Help bisa dilihat:

constructor Create(Collection; AOwnsObjects: Boolean = True);

 The AOwnsObjects parameter is a boolean that indicates whether object entries are owned by the list. If the object is owned, when the entry is removed from the list, the object is freed. The OwnsObjects property is set from the value of this parameter. The default is true.

Tulisan ini dibuat sebagai pengingat diri sendiri yang sudah 
dua kali terjatuh dalam jebakan yang sama, 
walau rentang waktunya memang sangat berjauhan. :D

Diterbitkan oleh

wisnuwidiarta

Hi, my name is Wisnu Widiarta. I am a movie lover and love traveling especially camping and doing outdoor activities. Coding and problem solving in general are things I love as well.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google

You are commenting using your Google account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.