|
|
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Понадобилось тут описать несколько похожих структур данных, типа вариативных записей но посложнее, например: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Суть в том, что активно они активно используются, например так (это удобно, если потом записи меняются): Код: pascal 1. Так вот, была мысль сделать через object : Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но проблема в том, что SizeOf(TBaseText) = SizeOf(Pointer), хотя object вроде не в куче хранится по-умолчанию? И как теперь можно адекватно получить размер данных нужного объекта для записи его в поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 14:57 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
alekcvpИ как теперь можно адекватно получить размер данных нужного объекта для записи его в поток? RTFM InstanceSize. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 14:58 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpИ как теперь можно адекватно получить размер данных нужного объекта для записи его в поток? RTFM InstanceSize. Я даже жирненьким выделил: object , не class. InstanceSize - это метод T Object, у объектного типа его нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:13 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
alekcvp Dimitry Sibiryakov пропущено... RTFM InstanceSize. Я даже жирненьким выделил: object , не class. InstanceSize - это метод T Object, у объектного типа его нет. Хочешь нечто такое, что считает все свойства, в т.ч. и те, которые сами могут быть объектами или даже ссылками на объекты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:21 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
wadman ссылками на объекты Имею в виду списки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:21 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Как выяснилось оно всё-таки работает, но только в рантайм. Через уловку с const их размер отображается неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:21 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
wadman Хочешь нечто такое, что считает все свойства, в т.ч. и те, которые сами могут быть объектами или даже ссылками на объекты? Нет, разумеется, только размер самого объекта (как записи). Но см. выше, проблема была в редакторе, а не в компиляторе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:22 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
alekcvp Но проблема в том, что SizeOf(TBaseText) = SizeOf(Pointer) Это на какой версии у тебя такая проблема? Проверил на 10.3, размер показывает адекватный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:28 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey alekcvp Но проблема в том, что SizeOf(TBaseText) = SizeOf(Pointer) Это на какой версии у тебя такая проблема? Проверил на 10.3, размер показывает адекватный. Я просто чтобы размер записей смотреть без компиляции делал так: Код: pascal 1. 2. После этого наводишь мышку на OBJ_SIZE и видно размер. С record работает, а для object всегда 4 показывает (D10.3). Но при выполнении приложения нормально всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 15:56 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
alekcvp, Ясно. Ох уж этот кодинсайт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2019, 16:07 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
зачем использовать object? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 13:22 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
14.11.2019 13:22, Квейд пишет: > зачем использовать object? стильно, модно, молодёжно! (С) зы: за любую новую хрень первым делом хватаются школьники. как обезьяны, йопт. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 13:25 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Квейд зачем использовать object? Статика + наследование, иногда удобно. Мимопроходящий, Она была новой во времена Turbo Pascal 5-6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 13:48 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
14.11.2019 13:48, Kazantsev Alexey пишет: > Она была новой во времена Turbo Pascal 5-6. сам объект в 5.5 появился. но речь то не об этом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 14:00 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
alekcvp, Я бы сделал TBase полем в остальных записях типа Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Тогда в записях можно компоновать произвольные повторяющиеся куски. Тогда packed в TBase тогда смысла не имеет, типы Cardinal, Integer не сожмутся, а скорость доступа уменьшится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 18:44 |
|
||
|
Как получить размер SizeOf для Object?..
|
|||
|---|---|---|---|
|
#18+
Квейд, У вас есть запись, в ней есть поля и методы, облегчающие работу с этими полями. Запись сохраняется в поток и/или передаётся по сети целиком, как я показывал выше. Теперь вам надо сделать ещё несколько записей, расширяющих эту. Все методы в каждой отдельной записи дублировать? А если потом я захочу исходную запись изменить - вручную изменять все остальные и все методы в них?.. Неудобно. Object решает все эти проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2019, 18:57 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39888723&tid=2038853]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 310ms |

| 0 / 0 |
