ПредишенСледващото

За пореден път: да не се добавя "решен!" в заглавието на този въпрос, е от значение за въпроса изобщо. Reshonnost въпрос се определя от наличието на отметка в един от неговите отговори. Ако не можете да поставите отметка сега са сами (давността не позволява), не трябва да бъдат маркирани по други начини. Може би други отговори правят. - D-страна на 27 Март в 11:47

Що се отнася до изключението - точното място на създаването на обект, който не е унищожен, може да покаже FastMM или EurekaLog. Този код работа, както и в повечето случаи се освобождава правилно. (Нюансите описани по-долу.) Най-вероятно сте създали TreeList и не унищожи (или чакат му унищожи обекта родител, и това не е присвоен).

Може би съм пропуснал нещо, но аз не виждам, когато данните за попълване SecParams взети.

Ако добавите до момента на създаването си SecParams - той трябва да бъде унищожен. В противен случай той ще протече.

Втората част try..except. Когато възникне изключение - обектът все още не е унищожен.

Въпреки, че това не е ясно, както не обработва параметри, а след това те са в грешен формат - обектът е създаден, но с празен параметър ParamsLst. И ако се обърнем към него, без проверка - е Достъп Нарушаване.

TObjData - има общи правила, когато се започва с описания тип Т писмото. F - За вътрешни полета на класа.

За полета клас TMyObj необходимо изрично да посочвате самоличността на видимост (частни, публични), или още по-добре, за да ги преместите в неофициалния раздел и да даде достъп до полетата с помощта свойства. Например:

  • TMyObj - името на класа трябва да описва обекта. (Например: TPerson)
  • @androshuk, благодаря отново! Благодаря на всички за предложенията, всички взети под внимание. Като се вземат предвид предложенията ви (промяна на код стил), решен проблемът за освобождението на ParamsLst: TStringList да освободи TDataList (старата заданието код). имот ParamsLst: TStringList прочетете FParamsLst. защото: = 0 до TObjData.Count - 1 се започне с TObjData.Items [Ь] да започнат TObjData.Items [I] .ParamsLst.Free; приключи; приключи; // Когато изтриете списък с останалите предмети в него ще бъдат изтрити. TObjData.Free. - Деда 26 март в 21:58

    В кода, няма момент на пълнене на променливата с странно име TObjData на. Но да предположим, че не е правилно OwnsObjects работят.

    Финализирането преди унищожаването на обекта TObjData по-добре да се провери обектите закачена и да разберете причината, поради която те не са освободени, преди да приключите.

    Свързани статии

    Подкрепете проекта - споделете линка, благодаря!