AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datei platzsparend als Text speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Datei platzsparend als Text speichern

Offene Frage von "L85"
Ein Thema von L85 · begonnen am 19. Aug 2006 · letzter Beitrag vom 21. Aug 2006
Antwort Antwort
L85

Registriert seit: 14. Mai 2006
29 Beiträge
 
#1

Datei platzsparend als Text speichern

  Alt 19. Aug 2006, 09:59
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.178 Beiträge
 
Delphi 12 Athens
 
#2

Re: Datei platzsparend als Text speichern

  Alt 19. Aug 2006, 10:07
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ß
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.756 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datei platzsparend als Text speichern

  Alt 19. Aug 2006, 11:01
..oder uuencode das Verhältnis ist dann (Original)3 zu (codiert) 4.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
L85

Registriert seit: 14. Mai 2006
29 Beiträge
 
#4

Re: Datei platzsparend als Text speichern

  Alt 19. Aug 2006, 15:04
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?
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#5

Re: Datei platzsparend als Text speichern

  Alt 19. Aug 2006, 15:25
Da hilft die SZCodeBaseX Komponente von Sasa Zeman, die sich unter www.szutils.net findet.
Man kann damit schön verschieene Algorithmen ausprobieren.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
L85

Registriert seit: 14. Mai 2006
29 Beiträge
 
#6

Re: Datei platzsparend als Text speichern

  Alt 20. Aug 2006, 07:15
Danke werde ich gleich mal testen
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Datei platzsparend als Text speichern

  Alt 20. Aug 2006, 09:26
Zitat von L85:
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.
Nichts einfacher als das: Editor--> Datei--> Öffnen-->Alle Dateien--> Auswählen
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)
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Datei platzsparend als Text speichern

  Alt 20. Aug 2006, 12:10
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Datei platzsparend als Text speichern

  Alt 20. Aug 2006, 13:12
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.178 Beiträge
 
Delphi 12 Athens
 
#10

Re: Datei platzsparend als Text speichern

  Alt 21. Aug 2006, 02:31
uuencode müßte eine Base64-Variante sein (wenn ich mich recht erinnere)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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:15 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