|
|
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Вычитываю XML, добавляю в TObjectDictionary Код: 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. Какого-то беса результат TAssetClass.Create - есть указатель на тот же адрес, что и в прошлой итерации цикла. Уже и перекрывал конструктор, без толку. Вроде просто всё, проще некуда. А не работает, точнее работает неправильно. Содержимое словаря в приложенной картинкой, стрелками разных цветов выделил дублирующиеся указатели на объект. Словарь заполняется один раз, освобождается в конце работы, в процессе - только чтение. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2019, 18:10 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Vizit0rЧто я делаю не так? Судьба Num не ясна, думаю, в нем собака и зарыта :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2019, 18:37 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. $FF для пропуска строк без 'resourcetype', ну это понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2019, 19:02 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Vizit0r, А как этот код расположен по отношению к остальному? Я подозреваю, что у Вас Num меняется в процессе: .Create не вызывается, меняется Num, старый объект с новым Num добавляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2019, 19:31 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
на отладке смотрел - нормально меняется на каждой итерации, в соотвествии с resourcetype в каждом элементе. Выложу почти полный исходник: под спойлером типы и классы. Код: 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. вот весь конструктор целиком, с разбором XML Код: 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. а вот файл, который разбирается. Код: xml 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2019, 20:28 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Vizit0rКакого-то беса результат TAssetClass.Create - есть указатель на тот же адрес, что и в прошлой итерации цикла.Так код этому и не противоречит. Как написал - так и работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 01:35 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
а поподробнее? AssetClass := TAssetClass.Create; же должно создавать НОВЫЙ экземпляр класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 07:21 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
докопался. оказывается, в TDictionary.DoSetValue происходит ValueNotify(oldValue, cnRemoved); ValueNotify(Value, cnAdded); а на cnRemoved в TObjectDictionary происходит уничтожение объекта. вот уж чего не ожидал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 08:18 |
|
||
|
Добавление классов в TObjectDictionary
|
|||
|---|---|---|---|
|
#18+
Vizit0rдокопался. оказывается, в TDictionary.DoSetValue происходит ValueNotify(oldValue, cnRemoved); ValueNotify(Value, cnAdded); а на cnRemoved в TObjectDictionary происходит уничтожение объекта. вот уж чего не ожидал. Рекомендую обращать внимание на параметры конструктора используемых объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 09:40 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39837111&tid=2039259]: |
0ms |
get settings: |
12ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 551ms |

| 0 / 0 |
