Ver(schlimm)bessertung für String-Handling (Unicode etc)

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von mschnell »

theo hat geschrieben:Das ist aber mit dem Multikulti String nicht automatisch behoben.
Das wäre ein Compiler Feature, dass er WideString Zuweisungen in UTF-8 Quellen automatisch umwandelt.

Bei MultiKultiStrings braucht man keine Widestrings mehr, da UCS2 auch als Kodierung für NewDelphiStrings angefordert werden kann.

Wenn es Widestring als expliziten Typ noch geben sollte und definiert ist, dass da immer die UCS-2 Kodierung verwendet wird, kann bei einer Zuweisung etc. automatisch konvertiert werden.

Eine Konstante muss ja auch nicht UTF-8 kodiert sein. wenn die Konstante als MultiKultiString behandelt wird, ist die Kodierung egal.

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von mschnell »

Socke hat geschrieben:Es gibt einen Compilerschalter, mit dem die Quelltextcodierung eingestellt werden kann.

So ist es. Dass die Kodierung des Qelltextes für Konstanten übernommen wird, wäre bei MultiKultiStrings unproblematisch, bei den momentan nicht sauber definierten StringTypen kann es aber zu den besagten Problemen führen.

-Michael

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von mse »

theo hat geschrieben:
mschnell hat geschrieben:Leider funktioniert dabei noch nicht einmal
MyWideString := 'Das ist eine Konstante äöü';

Das ist aber mit dem Multikulti String nicht automatisch behoben.
Das wäre ein Compiler Feature, dass er WideString Zuweisungen in UTF-8 Quellen automatisch umwandelt.

Dieses Feature gibt es schon längst. Es wird mit -Fcutf8 oder {$codepage utf8} aktiviert.

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

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von theo »

mse hat geschrieben:Dieses Feature gibt es schon längst. Es wird mit -Fcutf8 oder {$codepage utf8} aktiviert.


Stimmt, hatte ich auch so im Hinterkopf.
Ich war mir nur nicht mehr sicher, weil es bei Laz offenbar nicht standardmässig eingeschaltet ist.
Was war noch gleich der Grund dafür?

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von Socke »

theo hat geschrieben:Ich war mir nur nicht mehr sicher, weil es bei Laz offenbar nicht standardmässig eingeschaltet ist.
Was war noch gleich der Grund dafür?

Vermutlich, weil man die Codepage jederzeit ändern kann.

Die Dokumentation dazu: http://www.freepascal.org/docs-html/prog/progsu81.html
Heißt das, der Quelltext muss in US-ASCII geschrieben sein (dort sind ja nur diese Zeichen zugelassen) und Zeichenketten können jede beliebige Kodierung haben? Demnach wäre es also nicht möglich seinen Quelltext in UTF-16 abzulegen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von mse »

theo hat geschrieben:
mse hat geschrieben:Dieses Feature gibt es schon längst. Es wird mit -Fcutf8 oder {$codepage utf8} aktiviert.


Stimmt, hatte ich auch so im Hinterkopf.
Ich war mir nur nicht mehr sicher, weil es bei Laz offenbar nicht standardmässig eingeschaltet ist.
Was war noch gleich der Grund dafür?

Theo, nimmst du mich jetzt auf den Arm?

Martin

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

Re: Ver(schlimm)bessertung für String-Handling (Unicode etc)

Beitrag von theo »

mse hat geschrieben:
theo hat geschrieben:Was war noch gleich der Grund dafür?

Theo, nimmst du mich jetzt auf den Arm?


Nö. Mir ist schon klar, dass darüber auch schon gesprochen wurde, deshalb schreibe ich "noch gleich" oder "nochmal".
Habe mich nur länger nicht damit befasst, und deshalb hatte ich's nicht gleich auf dem Radar.
Es gab ja mehrere Threads zu dem Thema, z.B. viewtopic.php?f=9&t=3368&start=0&hilit=codepage+utf8

Antworten