Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stream in Hexcode umwandeln und zurück (https://www.delphipraxis.net/139151-stream-hexcode-umwandeln-und-zurueck.html)

himitsu 26. Aug 2009 11:21

Re: Stream in Hexcode umwandeln und zurück
 
Du weißt aber, daß so die Dateidaten um das Doppelte größer werden?

Außerdem braucht man dann nichtmal mehr 'nen ResEditor, da man sich sogar mit dem billigen Notepad die Daten aus der EXE ziehen kann ... denn was Auffälligeres, als ein ellen langes Stück HexCode in einer Exe, gibt es kaum.

Willst du dann nach dem Zurückladen die DLL wieder auf die Platte speichern, um sie auszuführen?
Wenn ja, dann kannst du sie auch in den Resourcen drinnen lassen, da man sich die DLL ja spätestens dann besorgen kann, wenn du/dein Programm sie speichert (egal wie schnell du die DLL wieder löschst).

Und selbst wenn du die DLL nicht erst speicherst, sondern direkt in den RAM lädst, dann kopier ich mir einfach diese Datei aus dem Anwendungsspeicher ... Fazit: ich bin schneller mit kopieren, als dir Möglichkeiten einfallen, mir dieses schwerer zu machen :angel2:

guidok 26. Aug 2009 11:55

Re: Stream in Hexcode umwandeln und zurück
 
Zitat:

Zitat von Aljoscha
Vielen Dank für die Antwort!
Das werde ich auch noch probieren, aber jetzt würde ich gerne erstmal den Fehler bei der Base64-codierung finden :-)
Ich habe immernoch nicht herausgefunden, warum es am Ende 4 Bytes mehr sind :-(

Ohne jetzt genauer geschaut zu haben, wird die codierte Datei offensichtlich um 4 Byte größer, wenn sich die Länge nicht durch 3 teilen lässt.

Delphi-Quellcode:
//Ausschnitt aus der Base64-Unit
function CalcEncodedSize(InSize: Cardinal): Cardinal;
begin
  // no buffers passed along, calculate outbuffer size needed
  Result := (InSize div 3) shl 2;
  if ((InSize mod 3) > 0)
  then Inc(Result, 4);
end;

himitsu 26. Aug 2009 12:07

Re: Stream in Hexcode umwandeln und zurück
 
dafür sollte man sich mal die Spezifikation zu Base64 ansehn

dort werden je 3 Zeichen in 4 Byte gepeichert und da es im System keine Längenangabe und auch keine fehlenden Bits gibt, wird alles auf 3 Byte aufgerundet und hinten noch entsprechend Markerzeichen angehängt, welche angeben, wieviele der zuviel dekodierten Zeichen entfernt werden müssen
also ist der Datenstom demzufplge auch mal bis zu 4 Byte länger, als die enthaltenen Daten in ihrer konvertierten Form belegen würden.

Aljoscha 26. Aug 2009 14:29

Re: Stream in Hexcode umwandeln und zurück
 
Vielen Dank für eure Zahlreichen Antworten!
Ich habe jetzt die Unit SZCodeBaseX verwendet, mit der geht es Problemlos!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Seite 2 von 2     12   

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