|
|
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Задача простая вроде бы. Держать в памяти некий список и из него получать данные по ключу. В частности, для именования колонок сетки. Вот весь модуль Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. Вот так создаю: Код: pascal 1. Использование Код: pascal 1. 2. 3. 4. 5. Access violation at address 00AEA017 in module XXX. Read of address 00000006 Почему-то не выполняется строка Result := TDictionary<String, String>.Create ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:17 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Неужто баг у Эмбы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:29 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11, А кто этот мусор (Result) будет инициализировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:49 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Т.е. в данном случае результат функции, как объект всегда нужно только создавтаь? Т.е. всегда должно быть только так: Код: pascal 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:51 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
тогда утечки Unexpected Memory Leak --------------------------- An unexpected memory leak has occurred. The unexpected small block leaks are: 45 - 52 bytes: TDictionary<System.string,System.string> x 57 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:54 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11 Код: pascal 1. Поэтому условие if Not Assigned(Result) then не выполняется. Но есть вероятность, что там будет nil ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 13:58 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. та же ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 14:02 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11, это был сарказм ) Нельзя рассчитывать на то, что на стеке значение переменной TObject будет инициализировано в nil. Если не ошибаюсь, на стеке инициализируются только переменные типа string. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 14:10 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
В общем, переделал вот так, утечек нет Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. использование Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 14:23 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Polesov, Все управляемые типы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 14:33 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
А что означает восклицательный знак слева вверху? Всё компилирует, всё работает. В этом модуле нет подсказок и предупреждение компилятора. Первый раз такое вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 15:56 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11 Т.е. в данном случае результат функции, как объект всегда нужно только создавтаь? Т.е. всегда должно быть только так: Код: pascal 1. ? Резалт := нил пиши в начале метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 16:22 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
В общем, использовать нужно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. а то получается так, что все эти списки пересоздаются в цикле по количеству колонок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 17:30 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
ёёёёё Резалт := нил пиши в начале метода. Тогда код будет выглядеть э-э-э... несколько избыточно ) Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 20:56 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Polesov, ну я там уже переделал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 20:59 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev Неужто баг у Эмбы ... Нет, ибо настоящий презик выглядит вот именно так Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 23:41 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
На самом деле код хоть и выглядит страшным, но он выйдет уже на Код: pascal 1. Не пройдя проверку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2020, 23:43 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Круто :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 10:02 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11 Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 10:58 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
Квейд, мне кажется, будет AV если вызвать FreeAndNil без проверки на несуществующем эеземпляре. Сейчас тестировать нет времени, но у меня, ЕМНИП, были проблемы, из-за чем же я и начал добавлять проверку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 11:18 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11 Квейд, мне кажется, будет AV если вызвать FreeAndNil без проверки на несуществующем эеземпляре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 12:10 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11, перед Free и FreeAndNil проверка на nil или assigned не нужна нигде и никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 13:56 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
А если Object1.Free, то проверять надо. Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 14:21 |
|
||
|
Assigned(TDictionary<>) возвращает True, хотя объект ещё не создан
|
|||
|---|---|---|---|
|
#18+
X11 А если Object1.Free, то проверять надо. Правильно? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2020, 14:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39930047&tid=2038557]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 330ms |

| 0 / 0 |
