Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: ZIP-Pakkaus

JoreSoft [25.05.2005 21:44:06]

#

Moi
Olen etsinyt ZIP-tyylistä pakkausta ohjelmaani VB6 ent.
vaan mistään ei löydy. onko kellän kokemusta?? tietoa linkeistä yms.

Tein hätäpäissäni tämmösen ;) Tää siis toimii kenttäpakkaajana ei norm. tekstin kaa kovin hyvin...

Function Pakkaa(T$) As String
Dim I%, J%, K%, M$, V$, Esto As Boolean
    I = 1
    V = "|"
    Do
        J = 0
        M = Mid(T, I, 1)
        Do
            J = J + 1
        Loop Until Mid(T, I + J, 1) <> M Or I + J > Len(T)
        'ei saa olla "|"-merkki eikä numero
        If J <= 4 And Asc(M) <> 124 And Not (Asc(M) >= Asc("0") And Asc(M) <= Asc("9")) Then
            For K = 1 To J: V = V & M: Next K
            Esto = True
        Else
            If Esto Then V = V & "|"
            V = V & Mid(Str(J), 2) & "|" & Asc(M)
            Esto = False
        End If
        If Not Esto Then V = V & "|"
        I = I + J
    Loop Until I > Len(T)
    Pakkaa = V
End Function

Function Pura(T$) As String
Dim I%, J%, K%, Määrä%, Merkki%, V$
    I = 1
Do
    J = InStr(I, T, "|")                        'Ensimmäinen
    K = InStr(J + 1, T, "|")                    'Toinen
    If K = 0 Then K = Len(T)
    Määrä = Val(Mid(T, J + 1, (K - 1) - J))     'Määrä
    If IsNumeric(Mid(T, J + 1, (K - 1) - J)) = True Then
        J = K                                       'Merkin alku
        K = InStr(J + 1, T, "|")                    'Toinen
        I = K
        Merkki = Val(Mid(T, J + 1, (K - 1) - J))    'Merkki
        For K = 1 To Määrä
                V = V & Chr(Merkki)
        Next K
    Else
        I = K
        V = V & Mid(T, J + 1, (K - 1) - J)
    End If
Loop Until Len(V) >= 80
    Pura = V
End Function

Tää siis pakkaa yhden rivi kerrallaan....

tekee tämmöstä koodia...
|81|32|
|81|32|
|81|32|
|81|32|
|81|32|
|81|32|
|81|32|
|3|48| |3|48| |3|48| |3|48| |3|48| |3|48| |3|48| |1|48| |1|48| |1|48| |1|48|44|32|
|3|48| |3|48| |2|48| |3|48| |1|48| |1|48| |2|48| |1|48| |1|48| |1|48| |1|48|44|32|
|3|48| |3|48| |3|48| |3|48| |2|48| |2|48| |3|48| |3|48| |1|48| |3|48|44|32|
|1|48| |1|48| |3|48| |3|48| |3|48| |3|48| |1|48| |3|48| |1|48| |1|48| |1|48| |3|48|44|32|
|81|32|
|1|48| |1|48| |1|48| |3|48| |3|48| |3|48| |3|48|58|32|
|3|48| |1|48| |3|48| |3|48| |3|48| |3|48|58|32|
|3|48| |2|48| |1|48| |1|48| |1|48| |1|48| |3|48| |3|48|58|32|
|1|48| |1|48| |3|48| |1|48| |1|48| |1|48| |1|48| |3|48| |1|48|60|32|

esakom [26.05.2005 16:30:53]

#

oikeassa pakkauksessa käytetään mm. huffman-koodausta ja muita fiksuja tekniikoita. Jos sen perusteellisesti opettelisi, niin siinä on muutamaksi illaksi puuhaa. Jos vain haluat zippailla, niin katso seuraavia:

http://www.codeguru.com/vb/gen/vb_graphics/fileformats/article.php/c6743/

siinä on pohjana infozip:
http://www.info-zip.org/pub/infozip/

JoreSoft [26.05.2005 18:14:14]

#

Kiitos oikein paljon! Tuo vaikuttaa hyvältä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta