vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Komprimierungsarten 
Autor: E7
Datum: 06.03.04 16:49

Hi,

bis jetzt habe ich nur RLE programmiert:

Function RLEEncode(ByVal EncodeText As String) As String
'Benötigte Variablen
Dim Pos As Long, ZielText As String, WieLang As Long, LastChar As String
'Zeichen abklappern
For Pos = 1 To Len(EncodeText)
    'Wenns ein anderes ist...
    If Mid(EncodeText, Pos, 1) <> LastChar Then
        'Falls noch kein Text vorhanden, neu beginnen
        If LastChar = vbNullString Then
            'Wie oft war es da? Genau 1 mal, nämlich jetzt
            WieLang = 1
            'Und welches Zeichen?
            LastChar = Mid(EncodeText, Pos, 1)
        Else
            'Zuweisen an den Rückgabewert
            ZielText = ZielText & Chr(WieLang) & LastChar
            'Die Länge des neuen Textes ist 1
            WieLang = 1
            'Welches Zeichen ist aktuell?
            LastChar = Mid(EncodeText, Pos, 1)
        End If
    'Wenn es das gleiche ist...
    Else
        '...Zähler erhöhen
        WieLang = WieLang + 1
        'Falls die Länge > 255 wird, muss es als anderes
        'Zeichen gewertet werden. Sonst ist ein Überlauf
        'die Folge...
        If WieLang = 255 Then
            'Zum Zieltext hinzufügen
            ZielText = ZielText & Chr(WieLang) & LastChar
            'Variable auf 1
            WieLang = 1
            'Nullstring zuweisen
            LastChar = vbNullString
        End If
    End If
Next Pos
'Nun ja, das letzte Zeichen muss auch noch hinzugefügt werden.
'Zuerst prüfen, ob vorhanden...
If LastChar <> vbNullString Then
    'Zuweisen an den Rückgabewert
    ZielText = ZielText & Chr(WieLang) & LastChar
End If
'Falls kein Text im Rückgabewert, war wahrscheinlich nur eine
'Buchstabengruppe im Einsatz, z. B. Space(10)
If ZielText = vbNullString Then
    'Buchstaben zuweisen
    ZielText = Chr(Len(ZielText)) & String(Len(ZielText), _
        Left(EncodeText, 1))
End If
'Rückgabewert zuweisen
RLEEncode = ZielText
End Function
 
Function RLEDecode(ByVal DecodeText As String) As String
'Die Variablen deklariern
Dim Pos As Long, ZielText As String, _
    LenC As Long, WasC As String * 1
'Wieder abklappern, aber alle 2 Zeichen
For Pos = 1 To Len(DecodeText) Step 2
    'Die Länge...
    LenC = Asc(Mid(DecodeText, Pos, 1))
    '... und das Zeichen ermitteln
    WasC = Mid(DecodeText, Pos + 1, 1)
    'Dem Zieltext zuweisen...
    ZielText = ZielText & String(LenC, WasC)
Next Pos
'...und den Zieltext als Rückgabewert ausgeben
RLEDecode = ZielText
End Function
Eignet sich aber eher für Bilder, nicht unbedingt für Strings.

E7

???????????????????????????????????????????????????????????
e7o.de | jetzt (wirklich) neu!

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Komprimierungsarten1.087ApfelBaum06.03.04 14:28
Re: Komprimierungsarten744E706.03.04 16:49
Re: Komprimierungsarten598ApfelBaum06.03.04 17:43
Re: Komprimierungsarten671E706.03.04 16:50
Re: Komprimierungsarten632ApfelBaum06.03.04 17:45
Re: Komprimierungsarten813E706.03.04 18:00
Re: Komprimierungsarten589ApfelBaum06.03.04 18:12
Re: Komprimierungsarten600E706.03.04 21:32
Re: Komprimierungsarten586ApfelBaum07.03.04 16:37
Re: Komprimierungsarten652ApfelBaum07.03.04 16:38
Re: Komprimierungsarten660E707.03.04 17:53
Re: Komprimierungsarten615E707.03.04 17:55
Re: Komprimierungsarten656E707.03.04 18:06
Re: Komprimierungsarten613ApfelBaum07.03.04 19:37
Re: Komprimierungsarten654E707.03.04 19:41
Re: Komprimierungsarten598ApfelBaum07.03.04 19:41
Re: Komprimierungsarten648E707.03.04 19:45
Re: Komprimierungsarten615SailSteam07.03.04 19:54
Re: Komprimierungsarten603ApfelBaum08.03.04 18:50
Re: Komprimierungsarten616SailSteam08.03.04 19:59

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel