|
|
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. На строке FreeAndNil (OtvJSArNotDuble); выскакивает ошибка и сообщения ShowMessage ('конец3'); я уже не получаю. Работаю на Delphi 10.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 00:31 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 defecator, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. На строке FreeAndNil (OtvJSArNotDuble); выскакивает ошибка и сообщения ShowMessage ('конец3'); я уже не получаю. Работаю на Delphi 10.3 мнея в этом коде настораживает момент, когда ты получаешь ошибку - "не понял структуру данных", но затем упорно что-то с этой неправильной структурой данных делаешь в моём понимании должно быть примерно так: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 00:41 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, тут вы правы. Но т.к. проблем в if нет (т.е. все хорошо парсится и дальше нужный элемент перекидывается из OtvJSA в OtvJSArNotDuble и выводится в Memo) то не проработал еще эту часть в else . Теперь устранил ваше замечание. Кстати попробовал вариант. Ошибка осталась. Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 00:49 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 defecator, тут вы правы. Но т.к. проблем в if нет (т.е. все хорошо парсится и дальше нужный элемент перекидывается из OtvJSA в OtvJSArNotDuble и выводится в Memo) то не проработал еще эту часть в else . Кстати попробовал вариант. Ошибка осталась. Код: pascal 1. 2. 3. 4. 5. бред, ты уж прости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 00:52 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, Понимаю, что бред. А как правильно не понимаю... Код: pascal 1. 2. 3. 4. 5. Выполняется без ошибки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:01 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 defecator, Понимаю, что бред. А как правильно не понимаю... Код: pascal 1. 2. 3. 4. 5. Выполняется без ошибки... а что там внутри try..finally ? появилось что-то свеженького, или осталось, как и было ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:11 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, Только это Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:16 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, Если убрать строку Код: pascal 1. , то все хорошо завершается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:24 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Тут http://www.delphibasics.ru/FreeAndNil.php пишут: Код: pascal 1. 2. 3. 4. 5. 6. 7. Никакого исключения не произойдёт - второй FreeAndNil не ничего делает. И это действительно так: Код: pascal 1. 2. 3. 4. 5. 6. FreeAndNil (OtvJSArNotDuble); FreeAndNil (OtvJSArNotDuble); - выполняется без проблем. FreeAndNil (OtvJSAr); - ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:30 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 defecator, Если убрать строку Код: pascal 1. , то все хорошо завершается... ты что-то не договариваешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:34 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, проблем в if нет (т.е. все хорошо парсится и дальше нужный элемент перекидывается из OtvJSA в OtvJSArNotDuble и выводится в Memo) В else не заходим! mmo2.text НЕ пустой там уже ответ от сервера. Ведь это procedure TForm1.Button7Click - Button7 ;) Но переменные OtvJSA и OtvJSArNotDuble существуют ТОЛЬКО в этой процедуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:37 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 defecator, проблем в if нет (т.е. все хорошо парсится и дальше нужный элемент перекидывается из OtvJSA в OtvJSArNotDuble и выводится в Memo) В else не заходим! mmo2.text НЕ пустой там уже ответ от сервера. Ведь это procedure TForm1.Button7Click - Button7 ;) дебаг тоже не работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 01:42 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 Если убрать строку Код: pascal 1. , то все хорошо завершается... Потому что двойное удаление у тебя. Ты в массив добавляешь элемент, которым владеет другой массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 02:23 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
defecator, моя голова не работает... Что я там должен увидеть/не увидеть? В такой связке ошибки нет. Но почему она вообще появляется??? Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 02:33 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Mechanic17 Если убрать строку Код: pascal 1. , то все хорошо завершается... Потому что двойное удаление у тебя. Ты в массив добавляешь элемент, которым владеет другой массив. Да. И надеюсь, что этот элемент теперь существует в двух массивах, а не как указатель на элемент первого массива. Тогда как нужно было скопировать этот элемент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 02:44 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 Тогда как нужно было скопировать этот элемент? Например, так: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 02:52 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Спасибо. Код: pascal 1. Ваша рекомендация снимает ошибку. Но в чем был конфликт? Пусть даже OtvJSArNotDuble хранит лишь указатель на один из элементов OtvJSAr. И когда удалил OtvJSArNotDuble остальные элементы OtvJSAr ведь еще существуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 11:22 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17, JSONArray при удалении, удаляет содержащиеся в нём элементы. В твоём случае, два массива имеют ссылку на один и тот же объект. Соответственно, когда один из массивов удаляет объект по ссылке, второй массив ссылается на уже удалённый объект. При попытке удалить объект второй раз и возникает ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 11:40 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Возможно OtvJSArNotDuble был добавлен в OtvJSAr, и OtvJSAr владеет и уничтожает OtvJSArNotDuble при своем уничтожении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 11:47 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Я не увидел вторую страницу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 11:47 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. Предположительно, FreeAndNil (OtvJSArNotDuble) уничтожает все внутренние итемы, которые были уже уничтожены предыдущей строкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2020, 21:04 |
|
||
|
FreeAndNil Dataset
|
|||
|---|---|---|---|
|
#18+
Mechanic17 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2020, 13:25 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40031491&tid=2037750]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 488ms |

| 0 / 0 |
