Як повернути tstringlist (будь-який об'єкт) з функції delphi

Якщо Ви знаєте, що функції в Delphi можуть повертати будь-які значення об'єкта, типу TStringList або TButton. Ви також повинні знати, що цим потрібно користуватися дуже обережно.

Хто повинен звільняти пам'ять?

У Delphi для Win32 кожен об'єкт, створений вручну, також вручну повинен бути звільнений. Це просто. Якщо Ви не звільните пам'ять від об'єктів, які Ви створювали, то Ваша програма врешті-решт займе всю пам'ять Windows і буде отримано повідомлення про помилку Acess Violations

Ось проста функція, яка повертає об'єкт Delphi - TStringList.

Це виглядає дуже просто. Зверніть увагу: так як функція повертає TStringList. а змінна неявно оголошується в кожної функції - result це і є змінна TStringList.

Більш того, коли Ви виходите з функції Ви створюєте об'єкт TStringList. відсутня в пам'яті. Хтось повинен звільнити об'єкт перед завершенням Вашого застосування.

Так як в більшості випадків Ви викликаєте функцію, коли Вам потрібен її результат, GetStringList буде викликатися з іншої частини коду:

Ось що важливо: ми маємо змінну типу TStringList ( "sl"). яка отримує результат функції GetStringList. щось робить з цим і нарешті, видаляє список з пам'яті, таким чином запобігаючи витоку пам'яті.

Попередження: коли функція повертає екземпляр об'єкта, завжди засвідчує, що об'єкт буде звільнений, коли в ньому більше немає потреби!

Зверніть увагу: TStringList не потребує власника, який буде створений. Для об'єктів, які потребують власника, сам власник відповідальний за об'єкт і сам знищує його!

Схожі статті