|
|
#1
|
||||
|
||||
Подобие джойнера
Здравствуйте!
Есть вопрос, помогите разобраться... Есть 2 файла, 1 из них - РЕ (ЕХЕ), 2 - мой (например *.my), как можно из моей программы вставить 2 файл в тот 1, причём чтоб после открытия 1 файла (из проводника), он смог "сообразить", что в него что-то записали и то что записали сохранить на жесткий диск. Вот примеры которые я нашел (работают, но не особо подходят): Код:
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; Помогите, очень надо! |
#2
|
||||
|
||||
Блин люди, помогите!) очень надо...
|
#3
|
||||
|
||||
|
#4
|
||||
|
||||
Цитата:
Та программа, что вы показали тупо склеивает 2 файла в один, а когда этот один запустить то запуститься маленький распаковщик, который те запакованные 2 файла запишет рядом с собой, а это не совсем то, что нужно. Объясню еще раз (может ответит хоть кто-то...): Мне надо записать 1 файл (можно сказать, текстовый) во 2 файл (ЕХЕ). После этого, если запустить ЕХЕ, то он должен при открытии узнать, что в него что-то записали и то что записали сохранить на жесткий диск (тобишь должен в результате быть 1 ехе файл, который при открытии записанный в него файл сохранял на жесткий диск). ЗЫ Пишу не вирус! |
#5
|
|||
|
|||
Ресурс спасет отца русской демократии. сохрани свой файл в ресурс и вкомпилируй в исполняемый файл. Далее, файл читает этот ресурс как поток и сохраняет его. Это если экзешник твой.
Если экзешник не твой, то только по предложенному выше методу. Тебе надо будет просто поправить загрузчик, что бы он распаковал оба файла и запустил исполняемый. Других вариантов тут нет. |
#6
|
||||
|
||||
Спасибо, буду пробовать.
|