|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Invalid pointer operation при JsonArray.Destroy
При попытке уничтожить объект возникает ошибка "Invalid pointer operation"
Код:
if Assigned(JsonArray) then begin for i := 0 to JsonArray.Size-1 do begin JSONArray2:=JsonArray.Get(i) as TJSONArray; for j := 0 to JsonArray2.Size-1 do begin {что-то делаем, все нормально} end; JSONArray2.Destroy;//тут уничтожается нормально end; JsonArray.Destroy;//а вот тут ошибка end; |
#2
|
||||
|
||||
Вероятно, что здесь нечего уничтожать - основной массив после выполнения цикла получается пустым, в самом начале похоже нужно произвести инициализацию экземпляра, выделить память под него, типа New(JsonArray), а может вместо "обычного" деструктора объекта следует вызывать FreeAndNil(JsonArray), всё может быть
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
||||
|
||||
Скорее всего JSONArray владеет JSONArray2 и когда JSONArray прибивается, то он пытается прибить JSONArray2, который уже прибит.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
|||
|
|||
Ну для начала вопрос: внутри JsonArray.Get(i) точно создаётся объект, или наружу выдаётся копися ссылки на объект?
|