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

Вниз

Файл, состоящий из картинок!   Найти похожие ветки 

 
M@XIDROM   (2002-01-21 01:53) [0]

Ребята, нужет типизированный файл, состоящий из компонентов типа TJPEGImage. Как это сделать?


 
MJH   (2002-01-21 05:29) [1]

файл из компонентов? хм...а что - прикольно


 
MBo   (2002-01-21 10:05) [2]

так тебе надо писать компоненты или все-таки только картинки?

а типизированный файл удобен, когда есть записи постоянной длины, иначе лучше пользоваться потоками, записывая сначала длину
структуры, а потом саму структуру.


 
M@XIDROM   (2002-01-21 11:21) [3]

А как воспользоваться этими потоками при записи набора картинок в файл????????????????


 
MBo   (2002-01-21 13:21) [4]

подгони под себя, чтение аналогично

procedure TForm1.Button1Click(Sender: TObject);
var
j1,j2:tjpegimage;
fs: TFileStream;
ms: TMemoryStream;
size: Integer;
begin
j1:= TJpegImage.Create;
j2:= TJpegImage.Create;
j1.LoadFromFile("e:\5.jpg");
j2.LoadFromFile("e:\4.jpg");
ms:= TMemoryStream.Create;
fs:= TFileStream.Create("e:\jpgs.dat",fmCreate);


j1.SaveToStream(ms);
ms.position := 0;
size := ms.Size;
fs.WriteBuffer( size, Sizeof(size));
fs.CopyFrom(ms, size );
ms.Clear;

j2.SaveToStream(ms);
ms.position := 0;
size := ms.Size;
fs.WriteBuffer( size, Sizeof(size));
fs.CopyFrom(ms, size );

ms.free;
fs.free;
j1.free;
j2.Free;
end;


 
M@XIDROM   (2002-01-22 23:09) [5]

МВо, спасибо большое за ответ! Но самая главная проблема в том, что мне теперь не считать правильно поток из файла! Если не трудно, напиши пожалуйста вариант для считывания из файла!


 
Фэ   (2002-01-22 23:37) [6]

Ясный пень, а заодно и ключи от квартиры..


 
MJH   (2002-01-23 03:59) [7]

2Фэ:
...где девки визжат...


 
MBo   (2002-01-23 08:43) [8]

если количество файлов меняется, пиши/читай в начале еще их количество и цикл делай
procedure TForm1.Button2Click(Sender: TObject);
var
j1,j2:tjpegimage;
fs: TFileStream;
ms: TMemoryStream;
size: Integer;
begin
j1:= TJpegImage.Create;
j2:= TJpegImage.Create;
ms:= TMemoryStream.Create;
fs:= TFileStream.Create("e:\jpgs.dat",fmOpenRead);

fs.ReadBuffer( size, sizeof(integer));
ms.CopyFrom(fs, size );
ms.position := 0;
j1.LoadfromStream(ms);
image1.picture.assign(j1);

ms.clear;
fs.ReadBuffer( size, sizeof(integer));
ms.CopyFrom(fs, size );
ms.position := 0;
j2.LoadfromStream(ms);
image2.picture.assign(j2);

ms.free;
fs.free;
j1.free;
j2.Free;
end;


 
Vitaly Nevzorov   (2002-01-23 22:31) [9]

Можно конечно и типизированный файл, только размер записи надо сделать максимально возможный и хранить в другом поле истинный размер:

Type TMyPicture=record
Name:String[255];
Length:integer;
picture:array[0..100000] of Byte;
end;


Но такой способ конечно доставит много хлопот, во-первых сложно заполнять массив, во вторых много места занимает на диске.

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

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

Впрочем можно еще назначить файл типа file of Byte и записи отделять одну от другой какой-нибудь стандартной последовательностью байт (16 уникальных байт должно хватить)

Кроме того файлы можно писать в ресурс, архив и т.п.

Все вопросы пожалуйста по email


 
pasha_golub   (2002-01-31 14:31) [10]

К стати на глаза только, что попался компонент для создания .cab файлов. Так вот идея: берешь этот компонент и сним работаешь, да к тому же еще и время экономишь. Наверное для хранения классно будет, а во время работы в TImageList их все скидывай!



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

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

Наверх





Память: 0.47 MB
Время: 0.016 c
1-42714
DenKop
2002-01-30 23:17
2002.02.14
Сохранение иерархической структуры.


1-42729
Tkach_
2002-01-30 16:43
2002.02.14
процессы


1-42768
Vitek
2002-01-31 13:06
2002.02.14
Текстовые компоненты


7-42879
Ajax
2001-11-07 14:42
2002.02.14
TIFF Format


14-42853
zero
2001-12-26 11:59
2002.02.14
Сегодня день рождения Чарльза Бэббиджа - изобретателя компьютера





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский