AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi FileStream hängt unerwünschte Zeichen an
Thema durchsuchen
Ansicht
Themen-Optionen

FileStream hängt unerwünschte Zeichen an

Ein Thema von Dash · begonnen am 17. Jun 2005 · letzter Beitrag vom 18. Jun 2005
Antwort Antwort
Dash
(Gast)

n/a Beiträge
 
#1

FileStream hängt unerwünschte Zeichen an

  Alt 17. Jun 2005, 11:04
Hi,

ich habe aus dem SwissDelphiCenter diesen Code benutzt um Daten an eine EXE-Datei ranzuhängen:
Delphi-Quellcode:
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;
Nun habe ich vor an die Test.exe dieses ranzuhängen:
Zitat:
^lalalalalalalala
³Œi=JF;NH
³Y}}}v
³ß~ƒ|
³< g†‰ˆŠ†|‹Š‹sf>
@KLX
Öffne ich nun allerdings die Datei mit dem Notepad erscheint dieses:
Zitat:
^lalalalalalalala
³Œi=JF;NH
³Y}}}v
³ß~ƒ|
³< g†‰ˆŠ†|‹Š‹sf>
@ KLXJ
Er hängt an dem KLX einfach ein J dran, warum ? Um die Datei die "gepatcht" wird handelt es sich um ein Runtime-Mdoul einer anderen Programmierumgebung. Wenn ich die Datei nun starte erscheint das die angehängten Daten ungültig sind weil halt hinten noch dieses J und ein paar Leerzeichen dranhängen

Wie kann man das verhindern??

Greetz
Dash
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#2

Re: FileStream hängt unerwünschte Zeichen an

  Alt 18. Jun 2005, 09:54
*push*
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#3

Re: FileStream hängt unerwünschte Zeichen an

  Alt 18. Jun 2005, 11:34
Zitat von Dash:
    aStream.Write(iSize, SizeOf(iSize));
Überleg mal, was diese Zeile macht...
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#4

Re: FileStream hängt unerwünschte Zeichen an

  Alt 18. Jun 2005, 11:42
Die Streamgröße speichern, und? o_O
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: FileStream hängt unerwünschte Zeichen an

  Alt 18. Jun 2005, 11:51
Die Streamgröße ist das, was du nich möchtest, dass es angehangen wird (sie kommt nochmal hinter deine angehangenen Daten )

Daten
Streamgröße

Code:
[color=#008000]^lalalalalalalala
³Œi=JF;NH
³Y}}}v
³ß~ƒ| 
³< g†‰ˆŠ†|‹Š‹sf>
@ KLX[/color][color=#ff0000]J...[/color]
  Mit Zitat antworten Zitat
Dash
(Gast)

n/a Beiträge
 
#6

Re: FileStream hängt unerwünschte Zeichen an

  Alt 18. Jun 2005, 12:01
Achsooo Fettes THX!!

Werde es gleich mal ausprobieren.

Edit: Funzt super !! Danke Euch beiden!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz