Текущий архив: 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.46 MB
Время: 0.004 c