Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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 их все скидывай!




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




Наверх





Память: 0.73 MB
Время: 0.047 c
6-42819           _Voodsboro_           2001-11-25 13:55  2002.02.14  
NMSMTP/ КАК написать анонимный маил


3-42646           --Reporter--          2002-01-17 13:16  2002.02.14  
Проблема с master-detail на сервере приложений


1-42717           Welder                2002-01-30 11:21  2002.02.14  
TdrawGrid


3-42659           Demon Ltd             2002-01-21 01:22  2002.02.14  
Работа из Edit ов с базами


1-42778           Romul                 2002-01-29 10:24  2002.02.14  
Как изменить цвет заголовка окна?