vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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

VB.NET - Fortgeschrittene
GZIP in Steam oder als String 
Autor: rub
Datum: 24.07.07 15:38

Hallo,

ich bin auf diesen Tipp gestossen.
http://www.vbarchiv.net/archiv/tipp_details.php?pid=1472

Jetzt will ich aber kein File zippen, sondern einen Text, ohne File.
Dazu wollte ich anstatt einen Filestream einen Memorystream benutzen.
Das ganze funktioniert allerdings nicht so wie ich mir das vorstelle.
Der Stram wird bereits von der Compression geschlossen.
Wenn ich die Compression nicht schließe ist das Resultat ähnlich dem Eingangstext, was ja nicht sein sollte.
Wie kann ich auf das Binär-Resultat des Vorgangs zurückgreifen und das als String zurückgeben?

Hier mal die Funktionen.
    Public Function ZipStream(ByVal Text As String) As String
        Dim str As String = ""
        Try
            Dim newStream As New System.IO.MemoryStream
            Dim data() As Byte = System.Text.Encoding.Default.GetBytes(Text)
            newStream.Write(data, 0, data.Length)
 
            Dim oCompress As New System.IO.Compression.GZipStream(newStream, _
              IO.Compression.CompressionMode.Compress)
            With oCompress
                .Write(data, 0, data.Length)
                .Flush()
                'Wenn Close ausgeführt wird, wird auch der Stream geschlossen.
                '.Close()
            End With
 
            newStream.Seek(0, System.IO.SeekOrigin.Begin)
 
            Dim br As New System.IO.BinaryReader(newStream)
            Dim b As Byte() = br.ReadBytes(newStream.Length)
            str = System.Text.Encoding.Default.GetString(b)
            newStream.Close()
 
            oCompress.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        Return str
    End Function
 
    Public Function EntZipStream(ByVal Text As String) As String
        Dim str As String = ""
        Try
            Dim newStream As New System.IO.MemoryStream
            Dim data() As Byte = System.Text.Encoding.Default.GetBytes(Text)
            newStream.Write(data, 0, data.Length)
 
            Dim oCompress As New System.IO.Compression.GZipStream(newStream, _
              IO.Compression.CompressionMode.Decompress)
 
            ' Inhalt blockweise auslesen und dekomprimieren
            Dim bBuffer() As Byte
            Dim nOffset As Integer = 0
            Dim nCount As Integer = 0
            While True
                ReDim Preserve bBuffer(nCount + 100)
                Dim nBytes As Integer = oCompress.Read(bBuffer, nOffset, 100)
                If nBytes = 0 Then Exit While
                nOffset += nBytes
                nCount += nBytes
            End While
            ReDim Preserve bBuffer(nCount - 1)
 
            str = System.Text.Encoding.Default.GetString(bBuffer)
            newStream.Close()
            oCompress.Close()
 
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Return str
    End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
GZIP in Steam oder als String1.245rub24.07.07 15:38
Re: GZIP in Steam oder als String885rub24.07.07 16:06

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