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

Вниз

Совместить графику и текст в одном файле?   Найти похожие ветки 

 
kutsanov ©   (2003-11-30 11:32) [0]

Можно ли создать файл в котором могли бы сосуществовать разнотипные данные.... например, чтобы при открытии одного файла программа вначале считывала бы рисунок *.bmp, затем считывал большой текстовый блок (около 300 кБ), затем считывала другие данные (можно хотя бы лишь первые два ....
к примеру на моей странице (www.nskport.narod.ru) в разделе "доска объявлений" есть прога, которая подгружает в себя текстовый файл, Картинку, Презентацию .... но все это берется из разных файлов. Можно ли сделать чтобы вся инфа хранилась в одно файле?


 
MBo ©   (2003-11-30 11:40) [1]

вот пример.
В твоем случае хорошо бы еще перед данными писать их тип (0-text, 1- bmp и т.д.), а в начале - общее количество блоков данных.


Сохранение несколько объектов, обладающих методом SaveToStream, в один поток

uses ... jpeg;

procedure TForm1.SaveClick(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;

procedure TForm1.LoadClick(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;


 
miek ©   (2003-11-30 12:15) [2]

Используй формат RTF.
Или формат Ворда (но придется работать через сам Ворд)


 
Amoeba   (2003-12-01 12:42) [3]

Такая задача легко решается если использовать т.н. структурированные хранилища (через интерфейс IStorage). Это наиболее универсальный способ. Можно почитать на
http://www.comizdat.com/3/4/90/3571/3574/


 
Dmitriy O. ©   (2003-12-01 13:14) [4]

Все просто надо хранить графику как текст в текстовом файле.
Правда если это JPG файлы и большие то текста потребуется немерянно. А для стандартных BMP легко.


 
kutsanov ©   (2003-12-02 16:37) [5]

Огромное всем спасибо за отклик на мою проблему
...
Отдельное спасибо "мастеру MBo" .
пока еще не проверил код, но думаю должно получится, и ... я многое узнал!
Спасибо!
....
только вот не понятно, там было лишь две картинки, а не картинка и файл.
все равно спасибо!
Будем трудится дальше



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

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-36709
Johnmen
2003-12-02 13:33
2003.12.12
RichEdit, непонятное поведение


1-36708
timak
2003-12-02 15:48
2003.12.12
Помогите найти QRStringGrid


6-36793
sapsi
2003-10-01 09:13
2003.12.12
Команда Ping под Делфи


7-36857
Tik
2003-10-07 11:40
2003.12.12
---|Ветка была без названия|---


3-36580
Duber
2003-11-19 16:00
2003.12.12
Есть ли СУБД в которых не нужно использовать посредников типа BDE