powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не получается понять почему утечка
15 сообщений из 15, страница 1 из 1
Не получается понять почему утечка
    #40072320
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

на фрейме лежит combobox
в него запихиваются обьекты TSelectIDNAME:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
TSelectIDNAME = class(TObject)
  public
  nID: integer;
  sID: string;
  sNAME: string;
  Constructor Create(Id_INT: integer; ID_STR,NAME: string); overload;
end;   

constructor TSelectIDNAME.Create(Id_INT: integer; Id_STR, NAME: string);
begin
  inherited Create;
  nID := Id_INT;
  sID := Id_STR;
  sName := NAME;
end;


всё это запихивается таким образом в combonbox:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   oCbb.Items.Clear;
   oCbb.Clear;  
................
        Q_TMP.First;
        while not Q_TMP.Eof do
        begin
        oCbb.AddItem(Q_TMP.FieldByName('NAME').AsString,
                        TSelectIDNAME.Create(Q_TMP.FieldByName('SEL_ID_INT').AsInteger,
                        Q_TMP.FieldByName('SEL_ID_CHAR').AsString,
                        Q_TMP.FieldByName('NAME').AsString));

        Q_TMP.Next;
        end;
 ..............


всё работает но в итоге получаю утечку в AddItem.
Не могу понять почему. По идее тут же ненадо все эти добавленные обекты потом руками удалять если combobox лежит на фрейме и по идее при уничточении должен их сам удалять.

Спасибо
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072321
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл добавить что это 2.0.10й лазарус, lcl
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072322
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
По идее тут же ненадо все эти добавленные обекты потом руками удалять
По твоей идее?
У тебя плохая идея.
Никто за тебя удалять ничего твоего не будет. К твоему же счастью.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072324
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock,

нашел тут обсуждение похожей проблемы. Походу причина кроется в самом фрейме. И в том как он создаётся.
В данном случае динамически кладётся в TPanel:
Код: pascal
1.
2.
3.
4.
     ......
     lnFound := pnlFirmsDoc.ControlCount;
     pnlFirmsDoc.InsertControl(TDocumentsList.Create(pnlFirmsDoc), lnFound);
     ......
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072325
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. Надо вручную удалять.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072326
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стринглист не является владельем объектов которые в нем могкт лежать.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072328
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если создание фрейма переделать так то проблема уходит:
pnlFirmsDoc.InsertControl(TDocumentsList.Create( Application.MainForm ), lnFound);
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072330
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
если создание фрейма переделать так то проблема уходит:
pnlFirmsDoc.InsertControl(TDocumentsList.Create( Application.MainForm ), lnFound);

к сожалению так похоже нельзя (добавлять фрейм в панель и передавать при этом ему основную форму).
Походу прийдётся переопределить TComboBox и самому начинать его чистить при уничтожении.
Что то у Фрейма с уничтожением вложенных обьектов не срабатывает если он сам динамически создан и добавлен в контейнер.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072331
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Походу причина кроется в самом фрейме.
Нет, причина в непонимании тобою элементарной логики, что никто не должен (т.к. этого делать ни в коем случае нельзя) очищать данные по ссылкам, которые неизвестно, когда были созданы и неизвестно, когда должны быть удалены.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072332
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun> к сожалению так похоже нельзя

Ты не понимаешь базовых основ - что такое
объект, ссылка на него, список элементов,
список с элементами-ссылками и т.д.

Почитай книги (пару соотв. глав), это недолго.
Без понимания основ методом тыка учиться
будешь дольше и хуже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072343
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

да вроде понимаю :)
тут просто тормознул.
Почему то думал что Combobox должен сам чистить свои обьекты, но если подумать чистить их самому нельзя и опасно итп. т.к. очистка может быть специфичнее вызова free итп.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072345
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

Внезапно в Item.Objects могут быть вообще не объекты.
Я вот туда часто integer-ы присваиваю.
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072350
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЯ вот туда часто integer-ы присваиваю.

Более того, оно и на уровне API - просто число. Но попробуй для развлечения загнать туда -1.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072352
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Почему то думал что Combobox должен сам чистить свои обьекты

если я правильно ошибаюсь, это могут делать дженерики
...
Рейтинг: 0 / 0
Не получается понять почему утечка
    #40072354
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Док
hlopotun
Почему то думал что Combobox должен сам чистить свои обьекты

если я правильно ошибаюсь, это могут делать дженерики

да, можно себе такое представить.
Но сегодня уже спать. В сотне мест пришлось подчистить.
Зато утечки ушли. Благо решил проверить, как то на лазарусных проектах руки не доходили.
К счастью только с комбобоксами накосячил, в остальном чисто.
Всем спасибо за участие!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не получается понять почему утечка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]