Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение данных 
V
    Опции темы
former
  Дата 1.4.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Как сохранять в файле со своим расширением данные, содержащие картинку (Jpeg) и текст (не архив)? Картинка не должна отображаться с помощью других программ.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Демо
Дата 1.4.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



У TJPEGImage есть метод SaveToStream.
Копируй в TMemoryStream, изменяй по своему алгоритму и сохраняй на диск.
ПРи загрузке проделывай обратную операцию.



--------------------
    
PM MAIL ICQ Skype   Вверх
former
Дата 1.4.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



То, что JPEG можно сохранить через поток, я знаю. Но как запихнуть туда ещё текст (например записи)? Хотелось бы увидеть пример с бинарным файлом. smile


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Демо
Дата 1.4.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(former @ 1.4.2006, 22:38 Найти цитируемый пост)
Но как запихнуть туда ещё текст (например записи)?


Да очень просто.

Код

procedure SaveData(const s: String; BinData: TStream; FilePath: String);
var
  FS: TFileStream;
  Len: Integer;
  Len64: Int64;
begin
  FS := TFileStream.Create(FilePath,fmCreate);
  try
    Len := Length(s);
    FS.Write(Len,SizeOf(Integer));
    FS.Write(s[1],Len);
    Len64 := BinData.Size;
    FS.Write(Len64,SizeOf(Int64));
    FS.CopyFrom(BinData,Len64);
  finally
    FS.Free;
  end;
end;

procedure ReadData(var s: String; BinData: TStream; FilePath: String);
var
  FS: TFileStream;
  Len: Integer;
  Len64: Int64;
begin
  FS := TFileStream.Create(FilePath,fmOpenRead);
  try
    FS.Read(Len,SizeOf(Integer));
    SetLength(s,Len);
    FS.Read(s[1],Len);
    FS.Read(Len64,SizeOf(Int64));
    BinData.CopyFrom(FS,Len64);
  finally
    FS.Free;
  end;
end;



Пример сохранения:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  FS: TFileStream;
begin
  FS := TFileStream.Create('unit1.pas',fmOpenRead);
  try
    SaveData('Это коммент',FS,'BinData.dat');
  finally
    FS.Free;
  end;
end;



Пример восстановления:

Код

procedure TForm1.Button2Click(Sender: TObject);
var
  MS: TMemoryStream;
  s: String;
begin
  MS:= TMemoryStream.Create;
  try
    ReadData(s,MS,'BinData.dat');
//Здесь исполльзуем загруженные данные
  finally
    MS.Free;
  end;
end;





--------------------
    
PM MAIL ICQ Skype   Вверх
former
Дата 3.4.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



Демо, спасибо.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0803 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.