![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
При попытке уничтожить объект возникает ошибка "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, который уже прибит.
|
|
#4
|
|||
|
|||
|
Ну для начала вопрос: внутри JsonArray.Get(i) точно создаётся объект, или наружу выдаётся копися ссылки на объект?
|