Entwickler-Ecke

Sonstiges (Delphi) - einfache kompremierung


Snoop007 - Mo 25.11.02 14:09
Titel: einfache kompremierung
hi,
ich arbeite viel mit txt dateien
ich möchte nicht das benutzer in diese daten reingucken können
ich habe eine verschlüsselung geschrieben (hex) aber leider wird die datei dadurch sehr gross hat einer eine einfache kompremierung zur hand ?

danke !


Udontknow - Mo 25.11.02 15:53

Hi!

Ich verstehe zwar nicht, wieso durch eine "Hex-Verschlüsselung" (denke mal du meinst einfache XOR-Verschlüsselung) deine Dateien grösser werden, aber in Delphi ist die Unit ZLib dabei, dort findest du die Klassen TCompressionStream und TDeCompressionStream, die du dafür benutzen kannst.

Cu, :)
Udontknow


Snoop007 - Mo 25.11.02 16:22

:oops: ich habe jeden buchstaben in hex umgewandelt

danke für den hinweis der unit !
hast du ein bps auf lager :)
bin gerade etwas kraftlos mich da rein zu denken user defined image


Anonymous - Mo 25.11.02 16:22

Alles klein ist noch Ok, aber kein Punkt und Komma?

Hex Wert ist vier Bit groß. Wie speicherst du das ab? Als ein Byte? Dann sind die ersten 4 Bit des Bytes leer. Pack also Zwei Bytes zu einem Byte zusammen und schon ist alles nur noch halb so groß.


Udontknow - Mo 25.11.02 16:45

Hier die Prozedur fürs Komprimieren (ohne Gewähr). Das Ableiten der Dekomprimierungsprozedur dürfte nicht schwer fallen.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure CompressFile(FileName:String);
var Stream,DestStream:TMemoryStream;
var CompressionStream:TCompressionStream;
begin
  Stream:=TMemoryStream.Create;
  try
    Stream.LoadFromFile(FileName);
    DestStream:=TMemoryStream.Create;
    try
      //Kompressionsstream erstellen, komprimierte Daten landen in DestStream
      CompressionStream:=TCompressionStream.Create(clMax, DestStream);
      try
        Stream.Position:=0;
        //Inhalt des Streams in CompressionStream einlesen)
        CompressionStream.Write(Stream.Memory^,SizeOf(Stream));
      finally
        CompressionStream.Free;
      end;
      //Komprimierte Daten speichern
      DestStream.SaveToFile(Filename);
    finally
      DestStream.Free;
    end;
  finally
    Stream.Free;
  end;
end;


Cu,
Udontknow


Snoop007 - Mo 25.11.02 17:10

danke ! :D