|
#1
|
|||
|
|||
какой формат?
Пишу прогу в задачу которой входит создать файл, записать в него несколько строк текста и добавить картинку в формате Jped или bmp, а так же распаковать этот файл и вывести в Label текст а картинку в Image а теперь вопросы: реально ли такое сделать (я насчет текста и картинки в одном файле) и какой формат лучше всего использовать?
P.S. примеры приветствуются |
#2
|
||||
|
||||
Цитата:
Код:
function AttachToFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean; var aStream: TFileStream; iSize: Integer; begin Result := False; if not FileExists(AFileName) then Exit; try aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite); MemoryStream.Seek(0, soFromBeginning); // seek to end of File // ans Ende der Datei Seeken aStream.Seek(0, soFromEnd); // copy data from MemoryStream // Daten vom MemoryStream kopieren aStream.CopyFrom(MemoryStream, 0); // save Stream-Size // die Streamgro?e speichern iSize := MemoryStream.Size + SizeOf(Integer); aStream.Write(iSize, SizeOf(iSize)); finally aStream.Free; end; Result := True; end; function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean; var aStream: TFileStream; iSize: Integer; begin Result := False; if not FileExists(AFileName) then Exit; try aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite); // seek to position where Stream-Size is saved // zur Position seeken wo Streamgro?e gespeichert aStream.Seek(-SizeOf(Integer), soFromEnd); aStream.Read(iSize, SizeOf(iSize)); if iSize > aStream.Size then begin aStream.Free; Exit; end; // seek to position where data is saved // zur Position seeken an der die Daten abgelegt sind aStream.Seek(-iSize, soFromEnd); MemoryStream.SetSize(iSize - SizeOf(Integer)); MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize)); MemoryStream.Seek(0, soFromBeginning); finally aStream.Free; end; Result := True; end; procedure TForm1.SaveClick(Sender: TObject); var aStream: TMemoryStream; begin aStream := TMemoryStream.Create; Memo1.Lines.SaveToStream(aStream); AttachToFile('Test.exe', aStream); aStream.Free; end; procedure TForm1.LoadClick(Sender: TObject); var aStream: TMemoryStream; begin aStream := TMemoryStream.Create; LoadFromFile('Test.exe', aStream); Memo1.Lines.LoadFromStream(aStream); aStream.Free; end; |
#3
|
||||
|
||||
Возьмите готовый формат хранения разнородной информации - XML. Работать с этим форматом просто.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Спасибо, поробую
|