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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 11:09   #1
BESS
Пользователь
 
Аватар для BESS
 
Регистрация: 30.07.2008
Сообщений: 48
По умолчанию сохранение компонента в файл

требуется сохранить в один файл текущее состояние компонента и динамический массив записей, и само собой восстановить все это из файла... как это реализовать литературу перерыл все что нашел выдает ошибки подскажите реализацию данной задачи.
BESS вне форума Ответить с цитированием
Старый 09.06.2009, 11:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
текущее состояние компонента
Ну проще написать процедурку которая каждое свойство переводит в скажем строку и записывает в файл (Для этого рекомендуется ИНИ файлы)
Цитата:
и динамический массив записей
В цикле сабо самой разумеется )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2009, 12:51   #3
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Я пологаю это можно сделать и через TStream. По крайне мере для record =100% делал.
А вот для компонентов, возможно поможет статья или статьи
Цитата:
Stilet А еще проще Для Record простой Write в типизированный файл ).
Как то так дам Ответ возникает, когда появляется задача. +1 ))
Don't worry be happy

Последний раз редактировалось Izhic; 09.06.2009 в 13:05.
Izhic вне форума Ответить с цитированием
Старый 09.06.2009, 12:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
По крайне мере для record =100% делал.
А еще проще Для Record простой Write в типизированный файл ).
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2009, 17:14   #5
BESS
Пользователь
 
Аватар для BESS
 
Регистрация: 30.07.2008
Сообщений: 48
По умолчанию

каждое свойство в ини файл это жесть компонент ttreeview да и плюс нужно в тот же файл записать и массив
идеально было бы через tstream что то вроде дампа этих участков памяти но как это сделать без поняттия .... это вобще реально для человека с с средними возможностями? можно примерсик или ссылочку на пример все что искал пробывал дает ошибку..
BESS вне форума Ответить с цитированием
Старый 11.06.2009, 18:57   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще то у tstream есть метод WriteComponent ReadComponent
попробуйте использовать их
(проверил на Лейбле и на ТриВиеве..работает)
единственное что не знаю...это можно ли несколько компонент в один файл пихать(хотя это решается связкой Мемори+Файл стримы)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.06.2009, 19:12   #7
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

можно. Это определённо. Заисывется ведь просто информация. И Она ни коем образом не пересекается.
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 13.06.2009, 10:17   #8
BESS
Пользователь
 
Аватар для BESS
 
Регистрация: 30.07.2008
Сообщений: 48
По умолчанию

вот код сохранения
Код:
procedure TForm1.Button2Click(Sender: TObject);
var stream:TFileStream;
begin
SaveDialog1.Execute;
try
     Stream := TFileStream.Create(SaveDialog1.FileName, fmOpenReadWrite);
   except
     Stream := TFileStream.Create(SaveDialog1.FileName, fmCreate);
   end;
stream.WriteComponent(TreeView1);
stream.WriteBuffer(pages,SizeOf(pages));
stream.free;
end;
вот чтения
Код:
procedure TForm1.Button3Click(Sender: TObject);
var stream:TFileStream;
begin
OpenDialog1.Execute;
stream:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
stream.ReadComponent(TreeView1);
stream.ReadBuffer(pages,sizeof(pages));

end;
и не работает... что я сделал не так?

Последний раз редактировалось BESS; 13.06.2009 в 10:18. Причина: сообщение в коде
BESS вне форума Ответить с цитированием
Старый 13.06.2009, 19:53   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте воспользоватся связкой Мемори и файл стрим
(то есть пишете компонент в Мемори стрим, потом в файл стрим пишете длину мемори стрима(с компонентом) и далее пишете на эту длинну содержимое мемори стрима...также лучше и данные сохранять(для дин массивов стоит и их длинну брать) чтение аналогично...то есть читаете длинну потом считываете нужное кол-во байт в мемори стрим а из него уже берете компонент)

код пока написать не могу(Дельфя глюканула, но вылечю и напишу)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.06.2009, 12:48   #10
BESS
Пользователь
 
Аватар для BESS
 
Регистрация: 30.07.2008
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение

код пока написать не могу(Дельфя глюканула, но вылечю и напишу)
буду очень благодарен
BESS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение в файл Ant1Player PHP 4 31.03.2009 16:33
Сохранение в текстовый файл Askat Общие вопросы Delphi 11 26.02.2008 14:47
Сохранение в *.Bmp - файл Рустам Мультимедиа в Delphi 14 28.11.2007 21:32
Сохранение в файл Македонский Общие вопросы Delphi 4 05.09.2007 15:04
Сохранение в файл *.*С Noor Общие вопросы C/C++ 6 08.01.2007 22:44