![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
пиши каждое строковое поле отдельно. Для каждой строки пиши сначала её длину, а потом собственно символьные данные.
-------------------- Обижено школьников: 8 |
|||
|
||||
CodeMonkey |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
А чего, собственно, её поднимать? Она и так есть. По умолчанию. Достаточно
заменить на:
И всё. И мы можем сохранять/загружать такой объект одной строчкой. Ежели это всё равно кажется чем-то неудобным, то: http://www.delphikingdom.ru/asp/viewitem.a...talogid=1206#06 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Немного разобрался. Наследовал, правда не от TPersistent, а от TComponent
и тогда FileStream.WriteComponent(объект) Но записей можно хоть целую кучу в одном файле хранить и далее смещая файловый курсор-указатель (Seek) на длину (SizeOf(Record) записи, находить нужную. А как с объектами быть? Если мне их надо в одной пачке хранить. У меня по файлу с пачками записей образуется динам. массив записей. В нем столько ячеек, сколько записей в файле. Они туда все считываются. Но количество записей я рассчитать могу (Общая длинаФайла, деленная на длину 1 записи) А с пачкой объектных данных как быть? Заранее спасибо. Это сообщение отредактировал(а) PsiMagistr - 8.5.2011, 18:38 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Отвечать на форуме считаю неправильным решением. Отвечать в личке? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
northener, пиши тут
-------------------- Обижено школьников: 8 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Ну так и быть - пишу тут. Вот вы произнесли/сказали - "короткий литерал" в сообщении от 7.5.2011, 13:54. А что значит этот термин "короткий литерал"? Я такого термина не знаю. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Есть несколько подходов. Самый грамотный - набор объектов должен загружать/сохранять объект контейнер. Совсем простой вариант - так же, как и с "пачками записей". Пишем объекты друг за другом в один поток. При чтении - читаем, пока не конец потока. В середине между двумя способами есть куча промежуточных вариантов. К примеру, можно в начало потока записать количество записей. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Давайте забудем об объектах. Автору объекты как таковые не нужны. Так он считает и я с ним согласен. Ведь он что хочет - записывать записи в файл и потом считывать их из файла. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Я говорил что 255 символов это ограничение на длину строкового литерала в дельфи (собственно поэтому я и назвал их короткими), а не на длину строки, как говорил ты. -------------------- Обижено школьников: 8 |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Хм. Давай всё же перейдём в личку. И там спокойно, со временем, разберёмся что, кто и когда говорил. Ибо я никогда не говорил ту ересь, которую ты мне приписываешь. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Говорил. Вот тут ты говоришь что речь идет именно о термине "литерал"
Не нужно. Есть предложение просто закрыть эту тему -------------------- Обижено школьников: 8 |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Кстати ребята,
Вот создал я объект на основе другого объекта. Добавил новые поля. Забаррикадировал поля свойствами. Нужно ли мне переписывать деструктор? Ведь если я воспользуюсь стандартным (присущим объекту родителю) то новые поля не будут уничтожены. Ведь старый деструктор ничего не знает о добавленных полях. И Если я должен переработать деструктор, что я туда должен записать? Как уничтожить поля? -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Тяжела ты шапка программиста.
Имеется массив Mass, содержащий объекты с разными данными, но все естественно одинакового класса. Пытаюсь записать массив в файл.
Имею файл. В файле (хвала Рандому столько объектов сколько ячеек в массиве. И О УЖАС - во всех объектах одинаковые данные!) Вот этот файл. Отчетливо видно два экземпляра. А вот данные одни и те же... object Persones Name = 'Olya' Sirname = 'fdfd' Family = 'fdf' end object Persones Name = 'Olya' Sirname = 'fdfd' Family = 'fdf' end -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Нечто похожее обсуждается здесь.
http://forum.delphiexpert.ru/index.php?topic=1550.0 Фишка в том, что у меня если надо один объект в файл засейвить, то он худо-бедно сериализуется. А если много в один и тот же файл (Массив объектов и цикл соответственно) - полный обломейшн. Но не под каждый же объект свой файл заводить? Это ж сколько файлофф будет? -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
Neobrat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 28.8.2007 Репутация: нет Всего: нет |
Implicit string cast from 'ShortString' to 'string' читайте как Implicit string cast from 'AnsiString' to 'string' с вытекающими отсюда последствиями так как ShortString как был массив из AnsiChar так и остался. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |