|
#1
|
||||
|
||||
Упаковка файлов
Если в конец файла дописать какую-то инфу, первоначальный файл будет открываться? Хочу сделать упаковку файлов, но так, что бы первоначальный файл можно было прочитать
|
#2
|
|||
|
|||
все зависит от того, какие это файлы и как ты, или не ты, их читаешь. давай более подробную информацию.
|
#3
|
||||
|
||||
Тебе посути надо полу джойнер, полу архиватор.
Ну архиватор - zlib тебе в помощь. Ну а с джойнеров можешь поискать, в инете есть много примеров. Вот тому пример: http://forum.inattack.ru/delphi-Dela...mi-t24457.html Помогаю за Спасибо |
#4
|
||||
|
||||
Цитата:
Мне надо записать их всех в один файл (скажем, 1.bmp) так, чтобы все программы могли прочитать этот файл и отобразить 1.bmp |
#5
|
||||
|
||||
Цитата:
Ну запихать информацию (или файл) в ЕХЕ можно, при этом будет открываться 1 файл (как тебе и нужно), но записать в bmp 10 файлов, и чтоб открывался 1 я думаю не реально. Если надо пример по сохранению в ЕХЕ, могу дать пример. Помогаю за Спасибо |
#6
|
||||
|
||||
Цитата:
|
#7
|
||||
|
||||
Вот пример, который записывает из одного приложение, в другую программу (ЕХЕ) текст. Но этот текст может быть и другая программа.
При этом, программа, в которую записан текст полностью работоспособна и открывается проводником. Код:
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); aStream.Seek(0, soFromEnd); aStream.CopyFrom(MemoryStream, 0); 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); aStream.Seek(-SizeOf(Integer), soFromEnd); aStream.Read(iSize, SizeOf(iSize)); if(iSize > aStream.Size) then begin aStream.Free; Exit; end; 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; //////////////////////// Вот пример загрузки (уже в записанную программу): var aStream: TMemoryStream; begin aStream := TMemoryStream.Create; Try LoadFromFile(ExtractFileName(ParamStr(0)), aStream); // загружаю из самого себя Memo1.Lines.LoadFromStream(aStream) Except ShowMessage('Ошибка!!!'); Halt; // выхожу end; aStream.Free; /// а вот пример записывания в файл: var aStream: TMemoryStream; begin AStream := TMemoryStream.Create; Memo1.Lines.SaveToStream(aStream); // загружаю /// записываю нужную информацию... AttachToFile('C:\1.exe', aStream); /////////////////////////////////////////// aStream.Free; Помогаю за Спасибо |
#8
|
||||
|
||||
большое спасибо)) очень помогло
|