|
|
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
Хочу получить список полей и свойств у объекта (тот который object, а не экземпляр класса) Код: pascal 1. 2. 3. 4. пишу Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. получаюFldCount: 0, PrpCount: 0 Заменяю на Код: pascal 1. получаюFldCount: 1, PrpCount: 0 Заменяю на Код: pascal 1. получаюFldCount: 1, PrpCount: 1 Это так и должно быть? Я ожидал во всех трех случаях видеть (1, 1) С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 20:53 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, As an alternative to class types, you can declare object types using the syntax type objectTypeName = object (ancestorObjectType) memberList end; where objectTypeName is any valid identifier, (ancestorObjectType) is optional, and memberList declares fields, methods, and properties. If(ancestorObjectType) is omitted, then the new type has no ancestor. Object types cannot have published members. Since object types do not descend from TObject, they provide no built-in constructors, destructors, or other methods. You can create instances of an object type using the New procedure and destroy them with the Dispose procedure, or you can simply declare variables of an object type, just as you would with records. Object types are supported for backward compatibility only. Their use is not recommended. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 21:09 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
В QC на все записи об object заявляют "мы это больше не поддерживаем, используйте record". Соответственно, новомодные хреньки с ним работать тем более не будут. Насчёт записей - хз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 21:27 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Только управляемые типы можно получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 21:45 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Структуры не поддерживают свойства на уровне RTTI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 21:49 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
Для таких вещей нужна ручная регистрация свойств Как в своё время было с CrystalLUA А для объединения информации RTTI с ручным заполнением когда-нибудь появится модуль Tiny.Namespace Но пока руки не доходят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2020, 21:53 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
Polesov Object types cannot have published members. GunSmoker "мы это больше не поддерживаем, используйте record". Как бы они объекты в итоге вообще не извели. GunSmoker Соответственно, новомодные хреньки с ним работать тем более не будут. ziv-2014 Только управляемые типы можно получить. SOFT FOR YOU Структуры не поддерживают свойства на уровне RTTI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 12:42 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, TypInfo.pas TTypeData ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 14:11 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Про deprecated объектов говорят уже миллион лет. А я как юзал, так и юзаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 14:12 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Потому что у компании есть обязательства из-за обратной совместимости. Использование того, что официально не поддерживается, подобно отпиливанию ветки на которой сидите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 14:41 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
X-Cite, У тебя есть альтернатива наследуемой структуре? Тогда зачем умничать? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 14:59 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, Чем не устраивает наследование классов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:36 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
X-Cite, Только одним Тем, что классы - не структуры ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:40 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU TTypeData Код: 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. принципиальных отличий класса от рекорда не вижу. Или вот это Код: pascal 1. подразумевает, что свойства есть только у класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:40 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
X-Cite Чем не устраивает наследование классов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:42 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Такие вещи как PropData, ArrayPropData тебе о чём-то говорят ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:44 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Что значит класс записать в поток? Значения полей класса? Значения свойств класса? Может вы имеете ввиду сериализация/десериализация? Ну так это все делается через соответствующие паттерны.. Если вам надо именно структура как область памяти, то что мешает сделать так? TRec1 = record A: Int32; B: Char; end; TRec2 = record Rec: TRec1; C: Int32; end; по сути то что надо... TRec2 состоит из TRec1 и своих полей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:49 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
X-Cite, Структуры вообще не нужны Используй классы ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 15:53 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
Любую современную задачу можно решить используя либо классы, либо структуры... object - не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:08 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
X-Cite, Я скажу больше Любую задачу можно решить с помощью object Классы и структуры не нужны ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:13 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU Такие вещи как PropData, ArrayPropData тебе о чём-то говорят ) X-Cite Что значит класс записать в поток? Код: pascal 1. X-Cite Если вам надо именно структура как область памяти, то что мешает сделать так? Код: pascal 1. X-Cite Любую современную задачу можно решить используя либо классы, либо структуры.. У объектов есть: 1) наследование 2) размещение на стеке у классов только первое, у рекордов только второе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:17 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, _Vasilisk_Не понял. Откуда получить? У object через Rtti можно получить информацию только об управляемых типах. Типа этого http://docwiki.embarcadero.com/Libraries/Sydney/en/System.Rtti.TRttiRecordType.ManagedFields ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:23 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, В RTTI принято комментировать динамические структуры Если посмотришь TypeInfo - там TypeData тоже закомментирован Потому что смещение не константно и зависит от длины имени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:26 |
|
||
|
Rtti и object
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Мне не нужно записывать класс в поток, потому что это невозможно. Мне нужно в поток записать структуру Код: pascal 1. Реализуете обертку форматтеров, которых нет из коробки, и сериализуйте в любой формат, бинарный, xml, json как душе угодно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: pascal 1. 2. Код: pascal 1. 2. Код: pascal 1. 2. Он вам даже string запишет и если другой класс есть тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2020, 16:33 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39986795&tid=2038088]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 483ms |

| 0 / 0 |
