Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Byte werte in einem string?


Flamefire - Di 20.03.07 21:57
Titel: Byte werte in einem string?
ich möchte ein paar byte-werte in einen string setzen. also zahlen von 0-127 aber dafür nur ein Byte verwenden

versucht habe ich:

Delphi-Quelltext
1:
str:=chr(1)+'hallo'+chr(100)                    


aber das geht nicht...der macht bei dem chr(1) schluss

das ganze ist für eine kompression (eine gaaanz einfache)
ich möchte da am anfang eine wortliste anhängen...und die ist im Format: 1String1|2String2|3String3...127String127|
und ich würde ja bis zu 3 Byte brauchen wenn ich das nicht als 1byte speicher
außerdem müsste ich ja das dann erst umständlich wieder auslesen...

jmd eine Idee?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt


Saubäär - Di 20.03.07 22:01

Moin,

möchtest du die Zahlen ausgeben? Wenn ja hilft dir IntToStr(); anstatt Chr();

Gruß


Flamefire - Di 20.03.07 22:02

nein möchte ich nicht...s.o.
habs editiert...


rizla - Di 20.03.07 22:09

hi,
vllt hats ja hiermit zu tun:
http://de.wikipedia.org/wiki/Steuerzeichen
da die ascii-zeichen ja steuercodes sind, interpretiert delphi die wahrscheinlich..
ich weiß es aber nicht genau.

:r:


Flamefire - Di 20.03.07 22:11

ja das wirds sein...aber wie komm ich da drumrum?
oder muss ich wirklich 3byte verwenden um 1 byte darzustellen?


rizla - Di 20.03.07 22:19

nee, um ein byte dazustellen brauchst du ein byte, ist schon richtig.
vllt solltest du nicht strings nehmen, sondern ein anderes konstrukt.
das selbe problem entsteht ja, wenn man ne binärdatei mit meinetwegen dem editor öffent,
sobald das steuerzeichen ETX (also end of text) kommt, ist vorbei..


Flamefire - Mi 21.03.07 07:55

ja ebn...das ist mein problem...

die komprimierung läuft so ab:
wortliste laden, jedes wort durch den Index ersetzen

da hab ich 2 probleme: was ist wenn in der textdatei schon zahlen drin sind oder ein wort der wortliste ohne leerzeichen vor einer zahl steht?


rizla - Mi 21.03.07 18:26

also ist das problem ganz grundsätzlich..
ich weiß nicht, aber vllt solltest du dir mal kompressionsverfahren an sich anschauen
siehe hier: http://de.wikipedia.org/wiki/Kategorie:Kompressionsalgorithmus
speziell die LZ*-Verfahren, das sind wörterbuchbasierende Verfahren. Und dann mal hier im DF suchen, da findest Du z.B. sowas:
http://www.delphi-forum.de/viewtopic.php?t=60535&highlight=komprimierung