|
|
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Добрый день! Имеется вот такая record: Код: 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. Имеется переменная Data, которая TAnswers. Ситуация N1 - Создание и заполнение переменной Data "с нуля". Пользователь указывает два числа, которые позже станут Data.nQ и Data.nM. После этого все массивы из Data должны будут создаться под размеры nQ, nM или nQ-x-nM. Все массивы должны быть "обнуленными": числовые = 0; строки = ''; чары = #0; Сейчас это все у меня делается вот так: Код: 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. Вопросы: Правильно ли я создаю динамические массивы в пределах указанной record? Будут ли создаваемые массивы всегда пустыми? Или же их нужно обнулять для 100% уверенности, что при обращении к "пустому" массиву в нем будет мусор вместо пустых значений? Ситуация N2 - Пересоздание и перезаполнение переменной Data. Уже имеется переменная Data, где все массивы-переменные заполнены рабочими данными. Пользователь вводит новые значения, которые станут в последствии Data.nM и Data.nQ. Вопрос: Как правильно "убить/сбросить/обнулить" ранее созданную переменную типа record, чтобы пересоздать ее вновь, вместе с новыми размерами внутренних динамических массивов с нулевыми значениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 16:30 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
ДокументацияExisting characters in the string or elements in the array are preserved, but the content of newly allocated space is undefined. т.е. новые элементы нужно обнулять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 16:36 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Tim WooВопрос: Как правильно "убить/сбросить/обнулить" ранее созданную переменную типа record, чтобы пересоздать ее вновь, вместе с новыми размерами внутренних динамических массивов с нулевыми значениями? Finalize() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 16:38 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Data:=Default(TAnswers); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 16:52 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Tim WooПравильно ли я создаю динамические массивы в пределах указанной record?Да Tim WooБудут ли создаваемые массивы всегда пустыми?Нет. Там будет мусор Tim WooКак правильно "убить/сбросить/обнулить" ранее созданную переменную типа record, чтобы пересоздать ее вновь,Незачем. Просто установите новые значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:12 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Нет. Там будет мусор Динамические массивы всегда обнуляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:22 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Сказал же уже: Data:=Default(TAnswers); Это полностью обнулит рекорд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:32 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyДинамические массивы всегда обнуляются.Только для managed типов Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:46 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
rgreatЭто полностью обнулит рекорд.Ему не нужно обнулять. Ему нужно перезаписать и он интересуется, нужно ли вызывать какой-нибудь деструктор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:47 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Ему не нужно обнулять. Ему нужно перезаписатьДля рекорда это одно и тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 17:59 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
rgreatДля рекорда это одно и тоже.Так зачем вначале обнулять, чтобы потом переписывать? Не проще ли сразу переписать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 18:01 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Только для managed типов Для всех: http://docwiki.embarcadero.com/Libraries/Rio/en/System.SetLength For a dynamic array variable, SetLength reallocates the array referenced by S to the given length. Existing elements in the array are preserved and newly allocated space is set to 0 or nil. For multidimensional dynamic arrays, SetLength may take more than one-length parameter (up to the number of array dimensions). Each parameter specifies the number of elements along a particular dimension. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 18:13 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Так. Для второй проблемы решил использовать Data:=Default(TAnswers); Чтоб уж наверняка. По поводу "обнулений" - получается что все таки будет забит нулями? А то из всего диалога не особо понятно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 18:53 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_rgreatДля рекорда это одно и тоже.Так зачем вначале обнулять, чтобы потом переписывать? Не проще ли сразу переписать?Так лаконичней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 19:12 |
|
||
|
record и очень динамические массивы
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyДля всех:Таки да. Недоглядел _Vasilisk_ Код: pascal 1. 2. 3. Tim WooПо поводу "обнулений" - получается что все таки будет забит нулями?Получается, что будет. В Delphi 2007 уже обнуление есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2018, 19:20 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39754049&tid=2039962]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 274ms |

| 0 / 0 |
