Indy und DefStringEncoding

Alle Fragen zur Netzwerkkommunikation
Antworten
harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Indy und DefStringEncoding

Beitrag von harrybonn »

Ich möchte gerne unter Linux Kontakt zu einem Windows-Server aufnehmen.

In meiner bestehenden Delphi VCL-App nutze ich

Code: Alles auswählen

 
IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
 


um aufjedenfall UTF8-Strings in der Netzwerkkommunikation zu erhalten.

In der Indy-Version, die ich hier im Netz für Lazarus auftreiben konnte (10.2.03.) steht das nicht zur Verfügung?

Wenn nein, gibt es eine andere Möglichkeit?

Frage am Rande: Gibt es eigentlich keine aktuellere Indy-Version, die ich hier in Lazarus 1.26 einbinden kann?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Indy und DefStringEncoding

Beitrag von theo »

Ich glaube Indy wird nicht so oft verwendet unter Lazarus.
Kannst du Synapse oder LNet verwenden?
http://wiki.freepascal.org/Networking_libraries

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: Indy und DefStringEncoding

Beitrag von harrybonn »

Nein, ich würde gern bei Indy bleiben, da ich es erfolgreich seit Jahren einsetze.

In diesem Projekt nutze ich gleichen Source übergreifend in VCL, FMX und hier in Lazarus LCL.
Gibt es denn nicht irgendwo eine aktuellere Indy-Version für Lazarus?
Ich meine bei der CodeTyphon-Installation wären neuere dabei gewesen.

Habe es alternativ mal mit einen UTF8Encode vor dem erstellen des Textstreams versucht, das reicht aber nicht.

Grundsätzliche Überlegung: Wenn ich alles in UTF8 habe (Unit, Form) dann müssten alle in einer Form erstellen Texte doch immer sowieso UTF8 sein, wieso ist das nicht der Fall?

Liegt das evtl. an bestimmten Voreinstellungen (Mode Delphi oder objfpc)?

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Indy und DefStringEncoding

Beitrag von Thomas B. »

Ich nutze verschiedene Indy-Komponenten problemlos mit Lazarus.
Ich verstehe das Problem nicht ganz. Egal welches Protokoll genutzt wird, es sollten sich die Bytes entsprechend in einen String konvertieren lassen.
Und wenn dazu erst mal jedes Byte aus dem Stream mit ReadBuffer einzeln gelesen werden muss.

bitte das Problem konkreter beschreiben

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: Indy und DefStringEncoding

Beitrag von harrybonn »

Ich möchte halt von Clientseite sicherstellen, dass der Text-Stream, den ich mittels eines TCP/IP-Clients sende, im UTF8-Format kodiert wird.

Das kann man mit den aktuellen Indys eben mit

Code: Alles auswählen

 
IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
 


erreichen.

Habe mir eben auf einen anderen Rechner mal so eine CodeTyphon-Installation gemacht, da ist das Indy wohl sehr aktuell (Version 10.6.2 aus 2015), jedenfalls stehen die gewünschten Befehle dort zur Verfügung.

Werde nun mal versuchen, ob ich diese Indys von dort hier an meinem Hauptrechner in die Lazarus Version 1.24 (bzw. 1.26 auf Linux) integrieren kann.

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: Indy und DefStringEncoding

Beitrag von Thomas B. »

Probier mal

Code: Alles auswählen

TCPClient.IOHandler.Write(ToBytes(MySendString,-1,enUTF8))

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: Indy und DefStringEncoding

Beitrag von harrybonn »

Danke, das werde ich morgen mal alternativ versuchen.

Ansonsten hat aber die Einbindung der aktuellen Indys funktioniert, ist jetzt soweit alles Bestens.

Antworten