Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   PHP gzcompress(); Delphi ZDecompressStr ( ) Data error (https://www.delphipraxis.net/189302-php-gzcompress-%3B-delphi-zdecompressstr-data-error.html)

luisk 27. Mai 2016 20:56


PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Hallo,
ich will über php einen String komprimieren
Delphi-Quellcode:
$compressed = gzcompress($s, 9);
echo $compressed ;
und über delphi dekomprimieren:
Delphi-Quellcode:
ls := idhttp1.Put(
       'http://127.0.0.1/.....php?bef='+  in_s_SQL
                   , nil );
          ld :=  ZDecompressStr ( @ls );
Problem: Meldung 'data error' beim Aufruf ZDecompressStr ( );
Woran kann es liegen ?

Rollo62 27. Mai 2016 21:06

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Bist du sicher das Put etwas zurückliefert ?

http://www.indyproject.org/docsite/h...ile=index.html

Rollo

luisk 27. Mai 2016 21:09

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von Rollo62 (Beitrag 1339066)
Bist du sicher das Put etwas zurückliefert ?

http://www.indyproject.org/docsite/h...ile=index.html

Rollo

ja , das klappt einwandfrei. Ich kann den gezipten Code auch mit dem Debugger sehen.
Ohne Komprimierung läuft auch alles optimal.
Jetzt will ich halt noch die Übertragung optimieren.
Kann es sein, dass die Algorithmen von PHP und Delphi nicht zusammen passen ?

Rollo62 27. Mai 2016 21:13

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
http://www.indyproject.org/docsite/h...TIdStream.html

Sorr^, der Link lässt sich nicht gut kopieren.
Aber muss nicht der Stream als 2. Parameter da rein ?

Rollo

luisk 27. Mai 2016 21:24

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von Rollo62 (Beitrag 1339068)
http://www.indyproject.org/docsite/h...TIdStream.html

Sorr^, der Link lässt sich nicht gut kopieren.
Aber muss nicht der Stream als 2. Parameter da rein ?

Rollo

den Stream brauch ich nicht daher nil. (den verwende ich, wenn ich eine Datei auf den Server lade und mit php entzippe - das funktioniert)

Ich übergebe einen SQL-Befehl als HTML-Parameter.
Die Rückgabe klappt auch super, wenn ich nicht komprimiere.

Wenn ich komprimiere kommt auch eine Antwort, mit einem String der nur ca 1/10 lang ist.
Beim Dekomprimieren kommt dann das Problem.

hstreicher 28. Mai 2016 07:22

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Nur so eine Vermutung
Transliterationsprobleme
Da wir weder die Delphi Version kennen noch den Typ derLS Variable
Vermute ich das der Rückgabewerte durch die Übergabe an die Variable in einen andere Darstellung konvertiert wird. Ansi UTF8 Widestring und. Versuche es mit ein Memorystream

Möglichkeit 2 du verwendest Pascal Strings die haben vorne 1 bis 2 Byte Längen Information und dein @ls im decompress faengt mit den falschen Bytes an

https://www.delphi-treff.de/tipps-tr...ll-downloaden/


Mfg Hannes

mjustin 28. Mai 2016 08:33

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Die Indy TIdHTTP Komponente kann auch von Haus aus GZIP dekomprimieren, dazu muss einfach eiine TIdCompressorZLib Komponente erzeugt und der TIdHTTP.Compressor Property zugewiesen werden. Fundstelle: http://stackoverflow.com/a/8597492/80901

luisk 28. Mai 2016 13:39

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von hstreicher (Beitrag 1339082)
Da wir weder die Delphi Version kennen noch den Typ derLS Variable

Mfg Hannes

Delphi Version : 10 Seattle
ls : string;

Danke für die Tips, es haut immer noch nicht hin.
Vielleicht hat der eine oder andere das auch mal umgesetzt.

hstreicher 28. Mai 2016 13:52

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Was wird denn gesendet?

wenn ein Ansistring geliefert wird wird er wenn er in LS abgespeichert wird
in einen WIdestring (also 16 Bit/Char) umgebaut und die Binäre Codierung ist hinüber

mfg Hannes

luisk 28. Mai 2016 14:09

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
ls=idhttp1.Put( l_url , nil );
liefert System.string


Vielleicht kann das mal noch jemand testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz