![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив Image в один файл [D2005, XP]
Wel © (2006-02-21 18:22:00)Уважаемые мастера. На форме имеется Н-количество Panel в которых столько же Image. Подскажите пожалуйста, как можно сохранить содержимое всех Image в один файл. И если можно то и обратную процедуру. Заранее спасибо. С уважением.
PZ (2006-02-21 19:25:00) [1]А может быть в ресурс загнать. Я, правда, не знаю, можно ли это сделать?
Джо (2006-02-21 18:42:00) [2]Я бы предложил структуру попроще.
Каждая порция данных предваряется 4 байтами, в которых указан размер. И этого будет достаточно.
Alkid (2006-02-21 18:42:00) [3]Ха, тут ещё фишкастее фишка есть. TGraphic - это абстрактный класс,
у которого есть конкретный потомки, которые, собственно, и реализуют
эти методы. Так что просто так считать не получится - надо ещё
знать какого именно класса надо штамповать объект, которому скармливать
поток.
Так что надо смотреть в сторону сериализации, как она введена в Delphi.
Ega23 (2006-02-21 18:41:00) [4]
> Имхо слишком накручено.
Если по-твоему, то после каждой итерации придётся вычислять параметры следующего блока.
Хотя на вкус и цвет...
Джо (2006-02-21 18:40:00) [5]>Alkid ©
> . А дальше размер не обязательно, как мне
> думается,
Неправильно думается.
Джо (2006-02-21 18:39:00) [6]> [3] Alkid © (21.02.06 18:33)
>
> > а как Вы собираетесь извлекать их назад?
>
> В принципе readFromStream читает ровно столько сколько надо
Нет, как раз ReadFromStream читает от текущей позиции до окончания потока данных.
Alkid (2006-02-21 18:38:00) [7]Имхо слишком накручено. Первые 4 байта точно надо
под количетсво картинок отвести. А дальше размер не обязательно, как мне
думается, ибо TGraphics сам записывает всю необходимую информацию и при
чтении единственное необходимое условние - это то, что бы текущая позиция
в потоке была на начале блока данных. Кстати, TGraphis.LoadFromStream
получает в параметре только поток).
Ega23 (2006-02-21 18:36:00) [8]В один Stream запихать-то проблем нет. А вот доставать как - это отдельная песня. Ты же ведь не знаешь заранее размер и количество картинок, так?
Я бы посоветовал создать такую структуру:
1. первые 4 байта (можно и не 4, если много) - количество картинок.
2. дальше по количеству картинок на 8 байт - в первых четырёх - байтовое смещение относительно начала потока, указывающее на начало очередного рисунка, во вторых четырёх - размер.
Ну и потом, собственно, сами картинки.
umbra (2006-02-21 18:35:00) [9]
> ровно столько сколько надо
а "сколько надо" откуда известно?
Alkid (2006-02-21 18:33:00) [10]
> а как Вы собираетесь извлекать их назад?
В принципе readFromStream читает ровно столько сколько надо и если
N картинок в поток записать, а потом N-раз из потока их считать всё
корректно отработает.
umbra (2006-02-21 18:31:00) [11]
> содержимое всех Image в один файл
>
а как Вы собираетесь извлекать их назад?
Alkid (2006-02-21 18:26:00) [12]Поробуй создать TFileStream и последовательно записывать в него
TImage.Picture.Graphics. Не очень уверен, что срабтает, но можно попробовать