Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.08.2013, 18:58   #1
йерулап
Заблокирован
 
Регистрация: 20.08.2013
Сообщений: 5
По умолчанию Сохранение списка TList в файл

Привет. Нужно сохранить список tlist (в идеале -tstringlist) содержащий много всяких классов -в файл, что бы впоследствие его можно было восстановить. Я знаю, что делать это нужно через TMemorystream, но хотел посоветоваться, гламурно ли будет?
йерулап вне форума
Старый 20.08.2013, 19:56   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,887
По умолчанию

А вы уже умеете сохранять в файл и восстанавливать из файла экземпляр произвольного класса?
northener вне форума
Старый 20.08.2013, 19:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Я думаю будет лучше, если каждый класс, что нужно сериализировать, получит методы записи своих полей и считывания их из стрима. Понятное дело что для каждого класса придется свой метод писать.
Впрочем тебе не помешает почитать статьи о сериализации :http://yandex.ua/yandsearch?text=%D0...D0%B8&lr=20554
I'm learning to live...
Stilet вне форума
Старый 21.08.2013, 15:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Что можно предпринять?
нужно исправить вашу ошибку.
вот только боюсь, что подсказать, в чём она без вашего кода НЕ получится!

Цитата:
Код:
stream.position:=12;
уверены, что строка в файле занимает РОВНО 12 байт?! может имеет смысл посмотреть файл в HEX редакторе?!

Код:
В принципе, можно забить try..except,
жуть.. самому то не стыдно, таким образом проблему прятать?!!


p.s. и ещё. Каа, объясните мне, пожалуйста, какое отношение Вы имеет к йерулап ?! Это Ваш клон?!
Иначе почему Вы в чужой теме самоуправничаете?!

Последний раз редактировалось Serge_Bliznykov; 21.08.2013 в 15:40.
Serge_Bliznykov вне форума
Старый 21.08.2013, 15:40   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Захотелось вставить в файл надпись "Do not edit!", чтобы предостеречь от редактирования.
А думаешь это как-то остановит юзера, или помешает ему что-то изменить?
И вообще зачем этим заморачиваться - кто запорет, сам виноват будет.
I'm learning to live...
Stilet вне форума
Старый 21.08.2013, 15:47   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А думаешь это как-то остановит юзера, или помешает ему что-то изменить?
Кстати, да, согласен!!

во-первых, как пользователь эту надпись вообще увидит. Если у Вашего файла расширение (например) .TLS или .BIN - то как он вашу надпись прочитает?!

а во-вторых, если у него хватает способностей править бинарные файлы, то, боюсь, что ваша надпись его не остановит, и, как правильно подметил Виталий - тогда он сам себе злобный буратина!
Serge_Bliznykov вне форума
Старый 21.08.2013, 17:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Насчет разблокировки не может быть и речи.
Насчет темы нужно смотреть код записи и чтения. Где-то выход за предел стрима, и выяснять нужно отладчиком.
Можно вместо try except (иногда так делаю) проверять сколько до конца стрима осталось минус текущая позиция. Если это число будет больше чем кол-во сколько считывать - выдать сообщене "В таком то классе закончился стрим".
Так проще определять где именно выход.
I'm learning to live...
Stilet вне форума
Старый 21.08.2013, 17:31   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему не может быть и речи
Посмотри свои предидущие посты и ответь на свой вопрос сам.
Давай не будем в этой теме оффтопить.
I'm learning to live...
Stilet вне форума
Старый 21.08.2013, 17:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как высчитать сколько осталось до конца стрима
Код:
Stream.Size-Stream.Position;
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки TList. Инвертирование списка. Человек_Борща Общие вопросы Delphi 3 12.05.2013 06:07
Сохранение списка файлов в .txt файл alexei-evil Общие вопросы C/C++ 3 04.08.2010 19:39
Сохранение списка в ini файл Vladya Помощь студентам 2 28.07.2010 16:30
Сохранение списка документов в текстовый файл twist Помощь студентам 3 14.05.2010 00:09
Урезать длину списка TList mutabor Общие вопросы Delphi 4 03.04.2010 12:22