|
|
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Уважаемые форумчане! Подскажите самоучке: Есть несколько экземпляров разных потомков одного класса. Они объявлены в соответствии со своим классом с перекрытием Create-а, но не инициализированы. Хотелось бы для экономии памяти инициализировать их по необходимости в процедуре, переменной в которой выступает экземпляр. Например: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Благодарен за любую помощь Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 17:12:13 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
SergeyOren, Ну, например так: Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 17:35:15 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
alekcvpНу, например так:Sample = nil ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 18:42:35 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
SergeyOren, В такой постановке задача не решается. Для инициализации нужна еще информация о типе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 18:48:23 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_В такой постановке задача не решается Да ладно... Код: pascal 1. 2. 3. 4. 5. Только, фу так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:06:44 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
SergeyOren, задание типа через "class of" нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:21:50 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:23:48 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey_Vasilisk_В такой постановке задача не решается Да ладно... ... Только, фу так делать. И не надо так делать . Что мешает сделать по образу и подобию работы с формами: Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:28:19 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Пока писал ответ, уже накидали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:29:51 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
FreedoomЧто мешает сделать по образу и подобию работы с формами Ничто не мешает, но условия определяю не я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:32:44 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
У меня один вопрос остался: где тут SergeyOrenХотелось бы для экономии памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:49:44 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Sample = nil Да, что-то я затупил. Тогда действительно, не решается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:52:18 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
alekcvpТогда действительно, не решается. Прекращай тупить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 19:58:45 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey Прекращай тупить Kazantsev Alexeyфу так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 20:31:40 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Но задача, тем не менее, решается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 21:12:34 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyalekcvpТогда действительно, не решается. Прекращай тупить Ага, а если эта переменная в другом классе (и юните) объявлена как private? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 23:19:54 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Spring 4D + Lazy инициализация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 23:34:42 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
alekcvpАга, а если эта переменная в другом классе (и юните) объявлена как private? :) А если не ударяться в фантазии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2017, 23:35:50 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо за заботу, пойду дерзать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 09:18:06 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
GunSmoker, спасибо, но при таких вызовах InitSample я вынужден руками указывать тип, чего как раз хотелось избежать. Да и стоит ли городить, когда можно вместо InitSample просто вызвать Create из типа, который я все равно должен указать в InitSample. Но все равно спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 12:20:18 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Если конструктор без параметров и переопределен через override то делается через Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 16:33:41 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
X-CiteЕсли конструктор без параметров и переопределен через override то делается через Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. +1 Красиво! Ну, а дальнейшее, я думаю, автор темы распространит по количеству параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:59:03 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Virtual StudentНу, а дальнейшее, я думаю, автор темы распространит по количеству параметров. Если кол-во параметров заранее неизвестно в конструкторе, то делается лямбда которая вызывается в момент выполнения конструктора с передачей соответствующзего объекта у которого уже будет нужный метод для инициализации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 21:13:44 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
Есть же TValue Что вы гоните :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 21:25:13 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
X-Cite, спасибо. Я подозревал, что задача решается ч/з RTTI, но подойти на практике образования не хватает. Где можно почитать, чтобы осознанно модифицировать ваш код (у меня Create-ы сложные с разным набором пар-ов)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 08:08:25 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
SergeyOrenЯ подозревал, что задача решается ч/з RTTI,Какой RTTI, если Вам нужно явно указать нужный тип? X-Cite Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 10:36:25 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Какой RTTI, если Вам нужно явно указать нужный тип? Вся соль в том, что он знает какой тип будет... Согласно его постановке у него есть Код: pascal 1. 2. 3. И где то он будет вызывать Код: pascal 1. т.е. в этом месте в коде он уже знает что передает переменную Class1. Т.е. что мешает вызывать Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 13:12:37 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
X-CiteТ.е. что мешает вызывать Код: pascal 1. Что мешает вызвать Код: pascal 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 15:14:56 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
X-Cite Код: pascal 1. И, кстати, при наличии виртуального конструктора есть более простой способ Код: pascal 1. 2. 3. 4. 5. 6. но это, опять таки, требует явного указания типа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 15:30:51 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Что мешает вызвать Sample := Class1.Create(...)? Сейчас так и вызываю, просто классов около 2-х десятков, они описывают устройства в эксп. установке. Установка решает разные задачи (иногда одновременно), устройства нужны не во всех задачах и даже не на всех этапах одной задачи. Для экономии по возможности я деинициализирую отработавшие в задаче устройства. Беда в том, что господа Пользователи регулярно заставляют меня программировать новые задачи и я просто устал следить за состоянием устройств. Вот и подумал, что если тип устройства уже объявлен, то у компилятора д.б. способ подставлять его в нужном месте. Судя по развитию темы, это слишком оптимистично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 11:44:13 |
|
||
|
Можно ли восстановить тип по объявленной переменной?
|
|||
|---|---|---|---|
|
#18+
SergeyOren, Может Вам нужна такая схема? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2017, 15:51:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041640]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 476ms |

| 0 / 0 |
