|
|
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#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. Вопрос - можно ли эти процедуры сгруппировать в одну? Если пишу как-то так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. то на выделенной строке возникает ошибка E2010 Incompatible types: 'T' and 'Variant'ошибка, как-бы логичная. С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:45 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Копируй память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:49 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatКопируй память.Память я копирую если типы совпали. А если нет, то мне еще нужна конвертация Variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:53 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
case PTypeInfo(TypeInfo(TValue)).Kind of ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:55 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
В твоем случае case PTypeInfo(TypeInfo(T)).Kind of ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 15:56 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatcase PTypeInfo(TypeInfo(T)).Kind ofИ что мне это даст? У меня будет tkInteger или tkFloat. Все равно мне нужна конвертация варианта в конкретный тип. Скажем T: SmallInt, VarType(AVal[0]) = varDouble И, что куда копировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:06 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Скажем T: SmallInt, VarType(AVal[0]) = varDouble И, что куда копировать? А что ты вообще хотел в таком случае? Оно конечно можно попробовать взять Round(AVal[0]), но я бы Raise сделал. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:12 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatА что ты вообще хотел в таком случае?Я бы хотел вызвать стандартный метод конвертирования варианта Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:21 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Замени строку присваивания на инлайновую процедуру копирования: Код: 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. В результате этого кода вместо вызова будет подставлен конкретный кусок кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:21 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Я бы хотел вызвать стандартный метод конвертирования вариантаНичего что double в SmallInt не влезает? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:24 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyЗамени строку присваивания на инлайновую процедуру копирования:О! Спасибо. Думал в этом направлении. Но думал об анонимных коллбеках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:27 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatНичего что double в SmallInt не влезает? :)127.0 даже в байт влезет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:28 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_О! Спасибо. Думал в этом направлении. Но думал об анонимных коллбеках Для большей красоты можно взятие адреса заменить на absolute, код получается идентичным: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:31 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Кстати, вот этот код Код: pascal 1. 2. 3. 4. А вернее вот этот Код: pascal 1. 2. 3. 4. не подпортит мне соседнюю память при вызове Код: pascal 1. 2. 3. 4. 5. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:34 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. [/quote] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:37 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_...не подпортит мне соседнюю память при вызове? Подпортит. Сделай там дополнительный case по размеру типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:44 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Kazantsev AlexeyЗамени строку присваивания на инлайновую процедуру копирования:О! Спасибо. Думал в этом направлении. Но думал об анонимных коллбеках У тебя ж 20170086 в другую сторону копирование ? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:02 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:15 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Дельфя какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:16 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_[dcc32 Fatal Error] F2084 Internal Error: AV06152806-R00000000-0Минимальный воспроизводимый пример Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:17 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatДельфя какая?XE3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:17 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Угу, на ней лучше не делать сложные генерик рекорды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:18 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
В Sеattle этот код не глючит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:19 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
Сделай вместо TGenericUtils<T> = record -> TGenericUtils<T> = class Должно заработатью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:20 |
|
||
|
Generics Variant to Type
|
|||
|---|---|---|---|
|
#18+
rgreatСделай вместо TGenericUtils<T> = record -> TGenericUtils<T> = classПробовал. И так пробовал Код: pascal 1. Пофигу. Два абсолюта и приплыли. Частично решил проблему когда все переменные засунул в вариантный record. Но остались финализируемые типы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:30 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39396489&tid=2038851]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 437ms |

| 0 / 0 |
