AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Stream in Hexcode umwandeln und zurück
Thema durchsuchen
Ansicht
Themen-Optionen

Stream in Hexcode umwandeln und zurück

Ein Thema von Aljoscha · begonnen am 24. Aug 2009 · letzter Beitrag vom 26. Aug 2009
Antwort Antwort
Aljoscha

Registriert seit: 30. Dez 2004
97 Beiträge
 
#1

Re: Stream in Hexcode umwandeln und zurück

  Alt 25. Aug 2009, 20:51
Also irgendwie komme ich nicht weiter...
Der Stream ist nach dem Codieren und Dekodieren mit den Funktionen der Base64.pas von Daniel Wischnewski 4 Bytes größer als vorher und die Datei entsprechend unbrauchbar.
Ich habe zu testzwecken den Windows-Taschenrechner calc.exe verwendet.
Größe vor dem Codieren: 114688 Byte, Größe nach dem Dekodieren: 114692 Byte.
Das Problem habe ich mit jeder Datei...

Delphi-Quellcode:
function MemoryStreamToStr(const MemoryStream: TMemoryStream): string;
var
  StringStream: TStringStream;
begin
  StringStream := TStringStream.Create('');
  try
    StringStream.CopyFrom(MemoryStream, MemoryStream.Size);
    Result := StringStream.DataString;
  finally
    StringStream.Free;
  end;
end;

procedure StringToStream(aStr : String; MemoryStream: TMemoryStream);
var
   aStrLen : Integer;
begin
  aStrLen:=Length(aStr);
  MemoryStream.WriteBuffer(aStrLen,SizeOf(Integer));
  MemoryStream.WriteBuffer(Pointer(aStr)^,aStrLen);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ms:TMemoryStream;
temp: AnsiString;
begin
//MemoryStream erstellen
ms:=TMemoryStream.Create;
ms.LoadFromFile('./calc.exe');

//Größe des Streams ausgeben
ShowMessage( IntToStr(ms.Size) );

//Stream in String speichern
temp:=MemoryStreamToStr(ms);

//Stream freigeben
ms.Free;

//String Codieren
temp:=Base64Encode(temp);

//Testweise String ausgeben
Memo1.Text:=temp;

//String Decodieren
temp:=Base64Decode(temp);

//MemoryStream erstellen
ms:=TMemoryStream.Create;

//String in Stream speichern
StringToStream(temp,ms);

//Ausgeben Streamgröße nach Codieren und Decodieren
ShowMessage( IntToStr(ms.Size) );

//Stream in Datei speichern
ms.SaveToFile('./calc2.exe');
end;
  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 06:43 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