[Delphi] Doklejanie się do pliku

0

Znalazłem fajne żródło dzieki któremu mozna dokleić dowoly plik do innego pliku np:bmp do bmp,exe do bmp ,exe do exe.Co ciekawe po doklejeniu wszystkom działa OK. Jest jeden problem jak teraz wyciagnąć
to co dokleiliśmy.

Źródło //www.delphi-area.com/source/Exejoiner1.5src.zip

Gdyby ktoś miał pomysł niech email me.

Zaspany

ps:NAUKA TO POTEGA....

0

Skorzystaj z pomocy Torry.net Tips&Trick.
Było coś tam o doklejaniu się do plików i odzyskiwania z plików.

Pozdrowienia Noob Saibot [browar]

0

Oto kodzik:

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 Streamgröß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 Streamgröß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;

Pozdrowienia Noob Saibot [browar]

Pomogło? Czy oto chodziło to więcej jest na Torry.net.

Pozdrowienia Noob Saibot

0

Tylko taki mały problem: większość antivirów od razu uwzględni błędy sumy kontrolnej i pomyśli, że to wirus (chyba, że od razu jest tak rozprowadzane).
A tak swoją drogą, to po co wam doklejanie bmp lub exe do innych? Jeszcze rozumiem, że może być przy samorozpakowujących się exekach (choć tam zapewne to trochę inaczej jest robione), ale bmp?

0

A jak dokleić exe do innego exe , ale tak by uruchamialy sie one obydwa - tak jak to robią wirusy?
Bo dokleic dla samego faktu doklejenia nie widze sensu...
Gerwazy

0

A jak dokleić exe do innego exe , ale tak by uruchamialy sie one obydwa - tak jak to robią wirusy?
Bo dokleic dla samego faktu doklejenia nie widze sensu...
Gerwazy

Na takie pytania nie znajdziesz na tym forum odpowiedzi. Gdybyś przejrzał poprzednie wątki o podobnej treści, to nie trudziłbyś się z pisaniem swojego pierwszego postu w tym wątku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1