AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CompressString ohne #0

Ein Thema von peschai · begonnen am 23. Okt 2007 · letzter Beitrag vom 23. Okt 2007
Antwort Antwort
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#1

CompressString ohne #0

  Alt 23. Okt 2007, 06:48
Hallo,
suche einfache möglichkeit eine Zeichenkette zu komprimieren und wieder zu dekomprimieren.
Das komprimierte sollte auch ein String sein. Das hat bestimmte Gründe, warum ich hier nciht mit Binärdaten arbeiten möchte, sondern mit Strings.

Nun fürchte ich aber, daß im komprimierten output auch eine #0 darin sein kann, was eventuell beim folgenden "stringhandling" zu problemen führen könnte...

"ZCompressionString" scheint zu machen was ich benötige, aber ich bin mir hier mit der #0 nicht sicher. Bei speicherung als "langer" string wird auch die länge extra gespeichert, so daß das pure string handling funktionieren dürfte...

Aber was, wenn ich den String in eien Datei schreibe oder von Windows anzeigen lassen möchte (#0 n->ende für windows pchar) oder ...
Am liebsten wäre mir ein compression output als String, der niemals eine #0 im String enthalten würde ...

Wer kann mir hier helfen ?
Peter Schaible
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: CompressString ohne #0

  Alt 23. Okt 2007, 06:59
Guten Morgen,

die Wahl des "richtigen" Kompressionsalgorithmus hängt von den Eingabedaten ab. Welche Eigenschaften hat der Eingabestring? Soll ein Standardverfahren verwendet werden? Muss das Verfahren streamfähig sein? Muss die Kompressionsrate maximal sein?

Grüße vom marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: CompressString ohne #0

  Alt 23. Okt 2007, 07:07
Du könntest den String nach der Kompression auf '#0' prüfen und diese escapen. Also z.B. so:
1. Alle Zeichen außer #255 bleiben.
2. #255 wird zu #255#255
3. #0 wird zu #255#254

Beim Einlesen kopierst Du alles außer #255. Wenn das Zeichen = #255, prüfst Du das nächste Zeichen. Ist das = #254, schreibst Du #0 in den Outut, ist es = #255 dann schreibst Du #255.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: CompressString ohne #0

  Alt 23. Okt 2007, 09:30
Zitat:
Aber was, wenn ich den String in eien Datei schreibe oder von Windows anzeigen lassen möchte (#0 n->ende für windows pchar) oder ...
Sollte dein Problem eher in diesem Feld liegen: Eine #0 kann man sowieso nicht anzeigen. Für die Anzeige könnte man also alle #0 durch z.B. #32 ersetzen. In Dateien umgekehrt wäre eine #0 normalerweise kein Problem (außer man beharrt darauf, sie als PChar einzulesen, aber warum sollte man).
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  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 14:03 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