Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2013, 17:15
tapky666 tapky666 вне форума
Прохожий
 
Регистрация: 09.12.2013
Сообщения: 1
Версия Delphi: Delphi EX3
Репутация: 10
По умолчанию Как сохранить Picture в Record, записать их массив в файл

День добрый.
Я пишу словарь, которая должен записывать и считывать массив записей
Код:
TArticles = record
Name: String[40];
Definition: String[100];
Image: TPicture; //TBitMap, может быть.
End;
Все данные заполняются и записываются по-очереди в run-time, но это уже другая история.

Мне необходимо понять, как сохранить в файл массив записей, содержащих picture.

Ранее подобный вопрос уже был:
(http://www.delphisources.ru/forum/sh...ad.php?t=4662)
В результате обсуждения san-46 предложил такой исходник:
(http://www.delphisources.ru/forum/at...&d=1213136627)
Но класс, который в нём описывается, рассчитан на одну запись.
А отредактировать класс на запись массива я не умею.
Прошу помощи. Если есть статьи, которые мне помогут, рад буду и им.
Спасибо.
tapky6666@gmail.com
Ответить с цитированием
  #2  
Старый 10.12.2013, 17:28
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от tapky666
День добрый.
Я пишу словарь, которая должен записывать и считывать массив записей
Код:
TArticles = record
Name: String[40];
Definition: String[100];
Image: TPicture; //TBitMap, может быть.
End;
Все данные заполняются и записываются по-очереди в run-time, но это уже другая история.

Мне необходимо понять, как сохранить в файл массив записей, содержащих picture.
record это структура постоянного размера, а в TPicture могут быть картинки произвольного размера, поэтому в общем случае нельзя сохранить record содержащий TPicture.
Ну и кроме того здесь Image это просто указатель (просто 4 байта в Win32) на объект класса TPicture, так что если просто сохранить такую запись, а потом в следующий раз загрузить, то указатель Image будет наверняка указывать не на картинку, а куда-то в "космос" (это где-то в районе Access Violation).
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Gareth (27.10.2014)
  #3  
Старый 11.12.2013, 02:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Учись работать с потоками (TStream).
Тебе придется сохранять сначала размер картинки, потом сами данные. Читать в обратном порядке. Делать придется через промежуточный поток в памяти (TMemoryStream).
Ответить с цитированием
  #4  
Старый 11.12.2013, 13:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а так как:
Цитата:
TPicture contains a bitmap, icon, metafile graphic, or user-defined graphic.
то придется еще и тип объекта сохранять. последний тип (user-defined) вообще в радость должен быть)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025