![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Здраствуйте.
Подскажите пожалуйста. Вообшем есть ComponentToString функция переводяшяя компонент в строку. А у меня такая ситуация что мне нужно не компонент перевести в строку ,а структуру (Record). Как мне-бы тут получше сделать? Ну каждое значение то тупо переводить при том что структура очень большая. И динамические массивы есть. Пробовал к компоненту приклуплять и потом переводить, тоже неполучилось :| Это сообщение отредактировал(а) Ak47black - 20.5.2007, 20:48 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ak47black, структура это просто проименованная облась памяти и больше ничего. В Run Time о ее содержимом ничего не известно, то ли дело объект с его RTTI. Вот для этого ее и придумали чтобы было легче жить
![]() P.S. Можно попробовать из структуры сделать объект. Объект ничем не хуже, разве что добавиться лишних 4 байта в конец, но думаю это ведь не критично, а так с ним можно делать все что с записью. Набахаешь ему пропитей в секции паблишд, глядишь RTTI появиться ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
а я бы создал два интерфейса ISerializeable(для перевода в строку) и IDeSerializeable - для обратного конвертирования из строки...
![]() в любом случае, вместо записей стОит перейти к ООП-модели. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Хм... а с каких пор интерфейсы что-то реализовывают? Как я читал интерфейс это всего лишь дополнительная таблица VMT у объекта. Реализуют все объекты. Что это за штука такая ISerializeable, расскажи подробнее ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
не, ну как создал бы - так и реализовал бы в своих классах ![]() ![]() |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
При помоши TPersistent, то невыходит чтото.
Сделал минимальное тестовое приложение во код
И приклепляю заодно что-бы не копировать. Посмотрите может чтото я нетак делаю ? (Сохраняет 0 байт) Это сообщение отредактировал(а) Ak47black - 21.5.2007, 15:02 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
И правильно делает - сохраняются только published property
|
|||
|
||||
Ak47black |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Ну тогда если
Так
,то
Это сообщение отредактировал(а) Ak47black - 21.5.2007, 15:17 Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() |
||||
|
|||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А почему бы тебе не использовать TStringList?
Зачем этот array? |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Snowy, ну это я как для теста.
У меня большая структура там всякого полно Вот отрывок например
Тут уже TStringList непоможет. Добавлено через 2 минуты и 30 секунд Как это все послать через сокет я не представляю кроме как тупой перебор, (таам только отрывок ,а сама структура очень большая) Добавлено через 3 минуты и 24 секунды Просто тупо выдернуть этот кусок с памяти не получиться :| Это сообщение отредактировал(а) Ak47black - 21.5.2007, 15:24 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Ak47black, охохо, безнадежное дело, разве что все рекорды (и вложенные тоже) делать объектами, а для каждого из полей делать Published свойство.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Угу. Дохлый номер.
записи не сериализуются и волшебной палочкой в единую область памяти не собираются. Либо делай класс, либо вручную запихивай каждый элемент в TWriter. |
|||
|
||||
Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Это как если по подробней? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Как? Как обычно классы делают.
А все поля сделай публишед пропертями. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Это сообщение отредактировал(а) Alexeis - 21.5.2007, 16:13 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |