RLE - Längenkomprimierung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Ofenrohr

Betreff: RLE - Längenkomprimierung

BeitragDo, Apr 07, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

diesen text hab ich mir durchgelesen und versucht nach ihm ein de/komprimierungs programm zu schreiben: http://de.wikipedia.org/wiki/L...nkodierung

das verschlüsselungsprogramm hat sehr gut funktioniert. es hat die größe um etwa 1/3 reduziert. leider hab ich noch probleme mit dem dekomprimieren. es kommt nicht das richtige heraus....

so hier der code:

komprimieren:
Code: [AUSKLAPPEN]

AppTitle "Komprimierer"

Graphics 800,600,32,2

Print "RLE - Längenkomprimierung"
Print
Print "Bitte warten sie...
Print
file = ReadFile("c:\hallo.txt")
file2 = WriteFile("c:\hallo2.txt")

same_bytes% = 0
lbyte% = 0
byte% = 0

While Not Eof(file)

   lbyte = byte
   
   byte = ReadByte(file)
   
   If lbyte = byte Then
      
      same_bytes = same_bytes + 1
      
   Else
   
      WriteByte(file2,same_bytes)
      WriteByte(file2,byte)
      
      same_bytes = 0
      
   EndIf
   
Wend

CloseFile(file)
CloseFile(file2)

Print "Komprimieren erfolgreich"
Print
Print "Drücken sie eine Taste zum Beenden..."

WaitKey

End



und hier zum dekomprimieren:
Code: [AUSKLAPPEN]

AppTitle "Dekomprimierer"

Graphics 800,600,32,2

Print "RLE - Längendekomprimierung"
Print
Print "Bitte warten sie...
Print
file = ReadFile("c:\hallo2.txt")
file2 = WriteFile("c:\hallo3.txt")

byte% = 0
same_bytes% = 0

While Not Eof(file)

   same_bytes = ReadByte(file)
   byte = ReadByte(file)
      
   For i = 1 To same_bytes
   
      WriteByte(file2,byte)
      
   Next    
   
Wend

CloseFile(file)
CloseFile(file2)

Print "Dekomprimieren erfolgreich"
Print
Print "Drücken sie eine Taste zum Beenden..."

WaitKey

End


ich hoffe ihr könnt mir helfen...

mfg ofenrohr
Ofenrohr.net
 

CodeMaster

BeitragDo, Apr 07, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn nicht zweimal die selben Bytes kommen, markierst du das
durch ein Nullbyte. Beim Entpacken der Datei fängst du jedoch
bei 1 an zu zählen. So sollte es funktionieren:Code: [AUSKLAPPEN]
same_bytes = readbyte(file)
byte = readbyte(file)
for i = 0 to same_bytes
  writebyte(file2, byte)
next
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Ofenrohr

BeitragDo, Apr 07, 2005 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
danke,

hab in den griff bekommen...

mfg ofenrohr
Ofenrohr.net

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group