|
|
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#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. Extentions.Base компилится и тестируется Код: 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. опробован вариант Код: pascal 1. 2. 3. 4. 5. 6. Сосбно, как реализуется вложенная параметризация с предопределенным типом, если она возможна вообще? Гугление не дало однозначного нет. по задумке дальнейшее наследование Items идет от TCustomItem1 и TCustomItem2 с передачей в TCustomExtention<> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:11 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
17.01.2018 14:11, Олег Третьяков пишет: > по задумке дальнейшее наследование Items идет от TCustomItem1 и TCustomItem2 с передачей в TCustomExtention<> эта многоступенчатая проктология тебе нужна для зачем? какова реальная задача? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:50 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, Ннадо)) Задача получать экземпляры наследников TCustomItem1 и TCustomItem2, видеть их поля/методы в параметризованном экземпляре TCustomExtention. Да и вообще разобраться с дженериками, что можно точно, что можно через финт ушами, что скорее всего ректально, а что нельзя в принципе. Если с первым понятно, со вторым - не все, с третьим и четвертым - надо узнавать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 15:18 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Народ, только давайте без религиозного фанатизма разберем инструмент применительно к конкретной задаче. Адептов устоявшейся парадигмы наверное тоже можно послушать, и только. Как еще понять полезность и применимость, как не через практику?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 17:28 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreatarray [0..0] of TObject Кстати, динамические массивы в последних Дельфях реально иногда снимают головняк в библиотеках. Я, например, настоятельно советовал бы отказываться от TStringList-ов в пользу TStringDynArray и подобных же массивов поверх НЕ объектных структур. Т.е. IMHO мелкие объекты, которые нужно списками передавать, но не содержащие внутри других объектов, лучше на record-ы переводить с динамическими массивами. Просто реально проще жить становится. Особенно когда такие списки из процедур и функций возвращаться должны. А если эту структуру нужно будет сортить или искать по ней чего - вот тут generic-ки и в помощь (например, см. TArray в System.Generics.Collections) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 17:29 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Дык объекты использовать стоит только тогда, когда без них не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 17:49 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreatДык объекты использовать стоит только тогда, когда без них не обойтись.Это как бы всем понятно. Но массивы записей не всегда удобны. Как раз из-за отсутствия элементарного общего базового функционала в этих самых массивах. Вот тут Generic-и в частности и помогают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 17:56 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. Это же не компилится... Типа TCustomItem2 нет, есть TCustomItem2<реальный тип> как и TCustomItem2<T2> и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 18:18 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 18:23 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
LeonidЭто как бы всем понятно. Но массивы записей не всегда удобны. Как раз из-за отсутствия элементарного общего базового функционала в этих самых массивах. Вот тут Generic-и в частности и помогают.Зацени: TArrayEx<T> = 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. 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. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. Вот тут я совместил плюсы массива, листа и генериков. :) http://www.rgreat.ru/tmp/Delphi/Indexes.pas ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 18:24 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreatЗацени: ... Вот тут я совместил плюсы массива, листа и генериков. :) Ну типа того... Мне только прямо сейчас восхищаться деталями некогда. Я бегло пробежал. В целом же похоже на образцовый пример применения дженериков в Дельфях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 18:45 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Главная фшка в том что это на класс а record на основе массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 18:49 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreatГлавная фшка в том что это на класс а record на основе массива.Да это-то как раз понятно из первых 4-х строчек. Я имею в виду, что не хочу сейчас в даваться в детали конкретной реализации и рассуждать на тему оправданности и оптимальности того или иного. В целом итак видно, что работа по обобщению и замещению продела не малая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:23 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий17.01.2018 15:18, Олег Третьяков пишет: > Да и вообще разобраться с дженериками, что можно точно, что можно через финт ушами, что скорее всего ректально, а что нельзя в принципе. забей. это нахер ненужные МОДНЫЕ бантики. Да хотя бы поэтому: Код: pascal 1. 2. 3. 4. и проверка соответствия типов во время компиляции + IntelliSense с корректной типизацией... Код: pascal 1. Вместо Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 19:27 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreat, Спасибо, очень интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 20:58 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
X-Cite Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Оно? Неа, не выходит каменный цветок. Если коротко, не видны члены List2[i].CI1List.____ Реальный код конечно сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 21:42 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
X-CiteМимопроходящий17.01.2018 15:18, Олег Третьяков пишет: > Да и вообще разобраться с дженериками, что можно точно, что можно через финт ушами, что скорее всего ректально, а что нельзя в принципе. забей. это нахер ненужные МОДНЫЕ бантики. Да хотя бы поэтому: Код: pascal 1. 2. 3. 4. и проверка соответствия типов во время компиляции + IntelliSense с корректной типизацией... Код: pascal 1. Вместо Код: pascal 1. жуть какая эти ваши генерики испоганили язык ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 21:46 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Всмысле не видны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 21:55 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
X-Cite, А внутри TCustomExtention? Код: pascal 1. 2. 3. 4. Или это у меня грабли? Или длинная цепочка наследования? Или хз?!( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 22:49 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
Ctrl + Space - помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 23:00 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
X-Cite, X-Cite, Ну почему(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 23:22 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
X-Cite, Разобрался, внутри себя нужно кастить к параметру типа. Осталось понять, как forward declaration и передать self своим контейнерам хотябы с базовым набором параметров класса. Пока сделал через класс-заглушку. Спасибо тебе большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 02:29 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
rgreat Код: pascal 1. 2. Подобный подход к наименованию ранит мою трепетную душу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 09:34 |
|
||
|
Дженерик+типизация+наследование+передача через границу bpl
|
|||
|---|---|---|---|
|
#18+
white_niggerrgreat Код: pascal 1. 2. Подобный подход к наименованию ранит мою трепетную душу :) не только твою ))) было бы гораздо правильнее Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2018, 10:54 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=119&tid=2041329]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 353ms |

| 0 / 0 |
