Seite 1 von 1

GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 05.10.2015 14:49
von Kiffi
Hallo,

von (m)einem Server bekomme ich Daten mittels ReceiveHTTPMemory(). Funktioniert soweit.

Empfange ich diese Daten GZip-komprimiert, so möchte ich diese mit UncompressMemory() dekomprimieren.

Lt. PB-Hilfe muss ich hierzu UseTarPacker() einbinden ("Bzip2 and Gzip compression are both supported")

UncompressMemory() mit #PB_PackerPlugin_Tar schlägt allerdings fehl. Ich bekomme immer eine 0 zurück.

Code: Alles auswählen

EnableExplicit

Define *Buffer, BufferSize
Define *Output, OutputSize
Define UncompressMemoryResult

UseTARPacker()
InitNetwork()

*Buffer = ReceiveHTTPMemory("[MeinServer]")

If *Buffer
  BufferSize = MemorySize(*Buffer)
  Debug "BufferSize: " + Str(BufferSize)
  OutputSize = BufferSize * 10
  *Output = AllocateMemory(OutputSize)
  If *Output
    UncompressMemoryResult = UncompressMemory(*Buffer, BufferSize, *Output, OutputSize, #PB_PackerPlugin_Tar)
    Debug "UncompressMemory-Result: " + Str(UncompressMemoryResult)
    If UncompressMemoryResult
      Debug "PeekS(*Output): " + PeekS(*Output, OutputSize, #PB_UTF8)
    EndIf
    FreeMemory(*Output)
  EndIf
  FreeMemory(*Buffer)
Else
  Debug "Failed"
EndIf
Ein .NET-Testclient, kann die Daten problemlos dekomprimieren. Was läuft schief?

Danke im Voraus & Grüße ... Peter

// Edit: Sehe grade, dass TAR anscheinend nur für CreatePack() und OpenPack() verwendet wird. Kann das jemand bestätigen?

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 05.10.2015 23:08
von ts-soft
Ich würde sagen, da fehlt die Angabe, das GZIP entpackt wird, also: #PB_Packer_Gzip

Gruß
Thomas

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 06.10.2015 11:57
von Kiffi
ts-soft hat geschrieben:Ich würde sagen, da fehlt die Angabe, das GZIP entpackt wird, also: #PB_Packer_Gzip
Du meinst so?

Code: Alles auswählen

UncompressMemoryResult = UncompressMemory(*Buffer, BufferSize, *Output, OutputSize, #PB_PackerPlugin_Tar | #PB_Packer_Gzip)
Leider keine Änderung. Dennoch Danke für den Hinweis!

Scheint so, dass es wirklich nur für CreatePack() und OpenPack() gilt. Diesbezüglich ist die PB-Hilfe ein wenig schwammig.

Grüße ... Peter

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 06.10.2015 12:36
von ts-soft
#PB_PackerPlugin_Tar macht ja auch keinen Sinn in UncompressMemory, da es sich ja nur um eine Ordnerstrukture (Container)
handelt und hier ja nur ein Memory geunpackt wird. Aber der Packalgorithmus wird anscheinend nicht unterstützt und
ist in der Hilfe ja auch nicht erwähnt.

Mußte wohl API nehmen.

Gruß
Thomas

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 06.10.2015 12:39
von RSBasic
ts-soft hat geschrieben:Mußte wohl API nehmen.
Oder ein anderes Pack-Format nehmen, wenn es möglich ist.

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 20.10.2015 21:29
von KeyKon
Schade, ich hatte mich schon gefreut endlich direkt mit PB GZip zu nutzen.

Hat zufällig jemand einen Link parat in dem ein Beispiel gezeigt wird wie man per DLL/LIB/API Speicherbereiche mittel GZip De/Entkomprimieren kann?

LG KeyKon

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 20.10.2015 21:55
von ts-soft

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Verfasst: 20.10.2015 22:40
von KeyKon
Super Danke :allright:

Sowas hab ich schonmal vor nem Jahr gesucht!
Bin damals aber den leichteren Weg über gZip.exe gegangen, da es damals eh nur um das ablegen von gZip komprimierten Daten in eine Datei ging um einem fremden Programm was zuzuschanzen.

LG KeyKon