![]() |
|
#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; Помогите, очень надо! |