Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Сохранение класса в файл


Автор: EugeneSm 3.1.2006, 03:39
Уважаемые! Помогите, пожалуйста с решением проблемы.
Умом понимаю, что проблема почти на пустом месте, но собственных знаний катастрофически не хватает для ее проблемы, сам я не программист и на данный момент нет уже времени для всяких RTFMов ), а задачу надо решить довольно оперативно.

Суть вот в чем: есть класс, проперти которого заполняются по ходу выполнения программы. Всего-то надо, чтобы выполнение программы можно было прервать в любой момент, сохранить этот класс в файл и потом, запустив программу заново, открыть файл и продолжить работу с того места, откуда закончили.

Теперь конкретезирую: как с помощью всяких стандартных компонентов Бильдера устроить сохранение класса на ЖМД с последующим его открытием?

И еще вот: smile Хотя на крайняк и теории хватит )

Заранее благодарен.

Автор: Exekutor 3.1.2006, 08:01
ну, если именно с помощью компонентов, то можно воспользоваться компонентом TMemo. Просто пишешь туда строки и потом вызываешь SaveToFile(<name>). Открываешь с помощью OpenFile(<name>).

Автор: azesmcar 3.1.2006, 09:19
Если не ошибаюсь эта тема здесь обсуждается уже 4-ый раз...
Поиск...
http://forum.vingrad.ru/index.php?showtopic=65661&hl=fwrite

Автор: azesmcar 3.1.2006, 09:38
Цитата
Теперь конкретезирую: как с помощью всяких стандартных компонентов Бильдера устроить сохранение класса на ЖМД с последующим его открытием?


Без разницы с помощью чего..а стандартного компонента в билдере для этого не существует...максимым можно заменить fread и fwrite на билдеровские функции..

Автор: EugeneSm 3.1.2006, 15:05
Цитата(azesmcar @ 3.1.2006, 09:19)
Если не ошибаюсь эта тема здесь обсуждается уже 4-ый раз...
Поиск...
http://forum.vingrad.ru/index.php?showtopic=65661&hl=fwrite

Прошу меня простить, но я в самом деле сейчас не располагаю временем где-то что-то искать. Обычно я так и делаю, но сейчас возможности такой нет.
Добавлено @ 15:06
Цитата(Exekutor @ 3.1.2006, 08:01)
ну, если именно с помощью компонентов, то можно воспользоваться компонентом TMemo. Просто пишешь туда строки и потом вызываешь SaveToFile(<name>). Открываешь с помощью OpenFile(<name>).

Спасибо, частично попробую это использовать, но что делать, если в классе есть переменные не текстового характера, а, скажем, растрового?
Добавлено @ 15:11
А что касается всякой ботвы из С типа fopen, то тут у меня, пардон, тоже затруднение выходит.
Использую диалоговое окно сохранения файла, откуда выдираю FileName в AnsiString. Как его потом засунуть в fopen, ежели там char просят, не знаю smile

Автор: azesmcar 3.1.2006, 15:16
Цитата
Спасибо, частично попробую это использовать, но что делать, если в классе есть переменные не текстового характера, а, скажем, растрового?
Добавлено @ 15:11
А что касается всякой ботвы из С типа fopen, то тут у меня, пардон, тоже затруднение выходит.
Использую диалоговое окно сохранения файла, откуда выдираю FileName в AnsiString. Как его потом засунуть в fopen, ежели там char просят, не знаю 


Почитай ссылку там написано, что касается AnsiString в char * то
Код

AnsiString FileName = "C:\\1.txt";
FILE *f = fopen(FileName.c_str(), "r+b");

Добавлено @ 15:18
Там множество решений твоей задачи, есть на C, есть на C++..
Выбирай что душе ближе...

Автор: EugeneSm 3.1.2006, 15:31
Цитата(azesmcar @ 3.1.2006, 15:16)

Почитай ссылку там написано, что касается AnsiString в char * то
Код

AnsiString FileName = "C:\\1.txt";
FILE *f = fopen(FileName.c_str(), "r+b");


Вы добрый шаман ) Спасибо. Проблема с именем файла решена - остались сущие мелочи ))
Все, буду вникать в ссылку.

Автор: Fixin 3.1.2006, 15:32
1) Если класс твой, и есть возможность перенести твои "проперти" в отдельную структуру, то сделай так и потом сохраняй в файл эту структуру просто как блок памяти (если в ней нет динамических составляющих)
2) Если вариант 1 не подходит, сохраняй каждый "проперть" поотдельности, потом грузи в том же порядке.

Автор: EugeneSm 3.1.2006, 15:34
Цитата(Fixin @ 3.1.2006, 15:32)
1) Если класс твой, и есть возможность перенести твои "проперти" в отдельную структуру, то сделай так и потом сохраняй в файл эту структуру просто как блок памяти (если в ней нет динамических составляющих)
2) Если вариант 1 не подходит, сохраняй каждый "проперть" поотдельности, потом грузи в том же порядке.

Спасибо, похоже, придется использовать именно второй вариант. Хотя, по-моему, это слегка геморройно (

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)