![]() |
Datei platzsparend als Text speichern
Also ich möchte irgendeine Datei(exe,res,txt,doc,usw..) in einen Text bzw in Zahlen konvertieren sodass man sie als doc oder txt speichern kann(und lesen, muss aber keinen sinn ergeben) und sie dann auch möglichstwieder zurückkonvertieren kann.
Bisher habe ich das gefunden leider ist er aber nicht wirklich platzsparend:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Source,Data:TMemoryStream; var Str:String; var Y:Byte; var i,res:integer; begin opendialog1.Execute() ; Source:=TMemoryStream.Create; Source.LoadFromFile(opendialog1.FileName); Data:=TMemoryStream.Create; progressbar1.Min:=0; progressbar1.Max:=Source.Size; While source.Position<source.Size do begin Source.Read(Y,SizeOF(Y)); progressbar1.Position:=Source.Position; res:=Y ; str:=inttostr(res); For i:=1 to 3 do begin res:=Ord(str[i]); Data.Write(res,1); end; end; Source.Free; savedialog1.execute; data.SaveToFile(savedialog1.FileName); end; |
Re: Datei platzsparend als Text speichern
Das einfachste wäre wohl im HEX-format (HexToStr), aber platzsparender wäre wohl eine Variante im Base64-Format.
HEX(16 Chars): 1 Byte = 2 Zeichen (also doppelt so groß) Base64(64 Chars): ... ich glaub so'n drittel größer ... kannst ja ma nachrechnen theoretisch ginge es auch mit kann 230 Chars, wenn man den gesamten Ansi-Zeichenvorrat ausnutzt ... knapp 1.05 mal so groß |
Re: Datei platzsparend als Text speichern
..oder uuencode das Verhältnis ist dann (Original)3 zu (codiert) 4.
Grüße Klaus |
Re: Datei platzsparend als Text speichern
Base64 habe ich in dem zusammenhang schonmal gehört aber wie nutze ich das für meinen zweck?
Der Pc ansich verarbeitet doch alles Binär gibt es keine Möglichkeit das man direkt an den binärcode der Datei kommt? |
Re: Datei platzsparend als Text speichern
Da hilft die SZCodeBaseX Komponente von Sasa Zeman, die sich unter
![]() Man kann damit schön verschieene Algorithmen ausprobieren. Grüße // Martin |
Re: Datei platzsparend als Text speichern
Danke werde ich gleich mal testen :P
|
Re: Datei platzsparend als Text speichern
Zitat:
Und schon siehst du völlig sinnlosen Text. Und platzsparend, na ja ich weis nicht, ob wenn man das als Text abspeichert plazparender wird. Viel effizienter dürfte das sein, wenn du das einfach in zip packst. (Gibt es komponenten) |
Re: Datei platzsparend als Text speichern
Moin L85,
kombiniere doch Himitsus und Alexanders Vorschläge. Wandele die Bytes der Datei in einen Hexstring um, und komprimiere das Ergebnis (ZIP, CAB o.ä.) Das umwandeln verdoppelt dann zwar die Grösse, aber das Komprimieren könnte dann wieder was rausholen (ggf. mal verschiedene Verfahren für so eine Datei testen.) Komprimieren z.B. mit TurboPower Abbrevia. Zu finden bei sourceforge. @Alexander: Vorsicht, wenn Du eine Binärdatei im Notepad öffnest und speicherst. Die Nullen (#00) werden in Blanks umgewandelt. |
Re: Datei platzsparend als Text speichern
Die Idee von Christian ist nicht schlecht. Allerdings würde ich erst komprimieren und dann in hex umwandeln etc. Denn wenn du erst wandelst und dann komprimierst hast du wieder Zeischen welche in einer Worddatei nicht sichtbar sind bzw. nicht gespeichert werden.
|
Re: Datei platzsparend als Text speichern
uuencode müßte eine Base64-Variante sein (wenn ich mich recht erinnere) :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz