GZipped Buffer mittels UncompressMemory() dekomprimieren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag 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?
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag von ts-soft »

Ich würde sagen, da fehlt die Angabe, das GZIP entpackt wird, also: #PB_Packer_Gzip

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag 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
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag von RSBasic »

ts-soft hat geschrieben:Mußte wohl API nehmen.
Oder ein anderes Pack-Format nehmen, wenn es möglich ist.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag 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
(\/) (°,,,°) (\/)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Re: GZipped Buffer mittels UncompressMemory() dekomprimieren

Beitrag 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
(\/) (°,,,°) (\/)
Antworten