Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

Массив Image в один файл   Найти похожие ветки 

 
Wel   (2006-02-21 18:22) [0]

Уважаемые мастера. На форме имеется Н-количество Panel в которых столько же Image. Подскажите пожалуйста, как можно сохранить содержимое всех Image в один файл. И если можно то и обратную процедуру. Заранее спасибо. С уважением.


 
Alkid ©   (2006-02-21 18:26) [1]

Поробуй создать TFileStream и последовательно записывать в него
TImage.Picture.Graphics. Не очень уверен, что срабтает, но можно попробовать


 
umbra ©   (2006-02-21 18:31) [2]


> содержимое всех Image в один файл
>

а как Вы собираетесь извлекать их назад?


 
Alkid ©   (2006-02-21 18:33) [3]


> а как Вы собираетесь извлекать их назад?

В принципе readFromStream читает ровно столько сколько надо и если
N картинок в поток записать, а потом N-раз из потока их считать всё
корректно отработает.


 
umbra ©   (2006-02-21 18:35) [4]


> ровно столько сколько надо

а "сколько надо" откуда известно?


 
Ega23 ©   (2006-02-21 18:36) [5]

В один Stream запихать-то проблем нет. А вот доставать как - это отдельная песня. Ты же ведь не знаешь заранее размер и количество картинок, так?
Я бы посоветовал создать такую структуру:
1. первые 4 байта (можно и не 4, если много) -  количество картинок.
2. дальше по количеству картинок на 8 байт - в первых четырёх - байтовое смещение относительно начала потока, указывающее на начало очередного рисунка, во вторых четырёх - размер.
Ну и потом, собственно, сами картинки.


 
Alkid ©   (2006-02-21 18:38) [6]

Имхо слишком накручено. Первые 4 байта точно надо
под количетсво картинок отвести. А дальше размер не обязательно, как мне
думается, ибо TGraphics сам записывает всю необходимую информацию и при
чтении единственное необходимое условние - это то, что бы текущая позиция
в потоке была на начале блока данных. Кстати, TGraphis.LoadFromStream
получает в параметре только поток).


 
Джо ©   (2006-02-21 18:39) [7]

> [3] Alkid ©   (21.02.06 18:33)
>
> > а как Вы собираетесь извлекать их назад?
>
> В принципе readFromStream читает ровно столько сколько надо

Нет, как раз ReadFromStream читает от текущей позиции до окончания потока данных.


 
Джо ©   (2006-02-21 18:40) [8]

>Alkid ©  
> . А дальше размер не обязательно, как мне
> думается,

Неправильно думается.


 
Ega23 ©   (2006-02-21 18:41) [9]


> Имхо слишком накручено.


Если по-твоему, то после каждой итерации придётся вычислять параметры следующего блока.
Хотя на вкус и цвет...


 
Джо ©   (2006-02-21 18:42) [10]

Я бы предложил структуру попроще.
Каждая порция данных предваряется 4 байтами, в которых указан размер. И этого будет достаточно.


 
Alkid ©   (2006-02-21 18:42) [11]

Ха, тут ещё фишкастее фишка есть. TGraphic - это абстрактный класс,
у которого есть конкретный потомки, которые, собственно, и реализуют
эти методы. Так что просто так считать не получится - надо ещё
знать какого именно класса надо штамповать объект, которому скармливать
поток.

Так что надо смотреть в сторону сериализации, как она введена в Delphi.


 
PZ   (2006-02-21 19:25) [12]

А может быть в ресурс загнать. Я, правда, не знаю, можно ли это сделать?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
2-1140677728
Новочеркасский Волк
2006-02-23 09:55
2006.03.12
Перехват клавиш сервера., {TClientSocket. TServerSocket}


15-1139916584
ZeroDivide
2006-02-14 14:29
2006.03.12
Сколько сейчас стоит написание диплома?


4-1134664590
The_scorpion
2005-12-15 19:36
2006.03.12
Функция CreateBitmap


2-1140689729
-=Dark=-
2006-02-23 13:15
2006.03.12
Ошибка при запуске Delphi


3-1137260997
з. танька
2006-01-14 20:49
2006.03.12
ADO+MS Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский