Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.14;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-42834
Ко Всем
2001-12-25 02:07
2002.02.14
Внимание


14-42860
Андрей Сенченко
2001-12-25 16:20
2002.02.14
Безумные размеры EXE-шников


1-42794
Stexen
2002-01-28 22:29
2002.02.14
Nishita ViewLib


1-42733
Beerkoff
2002-01-30 18:02
2002.02.14
Мигание Canvas в D6


1-42711
Анатолий
2002-02-01 07:08
2002.02.14
разрешение экрана