Ich auch. Manchmal habe ich wirklich das Gefühl, dass du nicht so genau liest, was ich schreibe, nichts für ungut.mschnell hat geschrieben: Ich würde allerdings uncodierte 8-Bit Strings als allgemein verwendbaren Datenspeicher sehr vermissen.

Ich auch. Manchmal habe ich wirklich das Gefühl, dass du nicht so genau liest, was ich schreibe, nichts für ungut.mschnell hat geschrieben: Ich würde allerdings uncodierte 8-Bit Strings als allgemein verwendbaren Datenspeicher sehr vermissen.
Weiß ich.mse hat geschrieben:Ich auch.
"8-bit strings will not be "codepage aware". Ist immer noch ziemlich uneindeutig. (Es ist natürlich in der frühen Projekt-Phase auch noch nicht nötig, das genau festzulegen.)mse hat geschrieben:Ich habe den Text angepasst.
Also:mse hat geschrieben: Ich finde die FPC 2.6 Lösung Ideal, ein utf-16 string für reinen Text der für praktisch alle Anwendungen die Zeichen-Extraktion mittels Index zulässt und ein 8-Bit string der in der Regel Text in der Systemcodierung enthält, aber auch binäre Daten oder beliebige 8-bit-Codierungen enthalten kann, mit automatischer Umwandlung zwischen Systemcodierung <> utf-16. Wobei man über letzteres bereits diskutieren kann. Ich bin noch nicht sicher, ob das im MSEcompiler implementiert wird.
Code: Alles auswählen
array[0..9] of integer;
Code: Alles auswählen
array[10] of integer;
Was meinst du damit? Was utf-16 bedeutet ist doch klar? Die Indizierung von UnicodeString meint "code units" = 16bit word. Was meinst du mit "anzeigbar"? Übrigens erlaubt utf-16 auch codepoints > 2^15 in einem code unit, die 2-Wort codepoints beginnen erst bei $d800.mschnell hat geschrieben:Codepoints > 2^15 sind erlaubt, werden aber vom System nicht explizit unterstützt.
finde ich - wie gesagt - ausgesprochen pragmatisch.mse hat geschrieben:Reiner Text wird in UnicodeString gespeichert. UnicodeString ist utf-16 codiert.
Ich halte die short strings für absolut verzichtbar. Ich würde den Begriff "ANSI" unbedingt vermeide, weil der User darin auch was anderes speichern kann und es dem Compiler egal ist.mse hat geschrieben:Für 8-bit Text und/oder Daten gibt es weitere String Typen, die Delphi 7 "AnsiString", auch shortstrings gedenke ich beizubehalten.
Ich finde die "base 1" Indizierung für Strings und die "base irgenwas" Indizierung für Arrays auch völlig idiotisch. Wenn es Dir nichts macht, dass etwas anderes kompatibel zu nichts wäre, Ich habe persönlich nichts gegen Indizierung grundsätzlich base 0.mse hat geschrieben:Ich würde gerne für Arrays und Strings einheitlich nullbasierende Indizes verwenden.
Natürlich. Ich meine das System kümmert sich nicht um die potentielle Zusammenfassung von mehreren 16-Codes zu "druckbaren Zeichen." Der Index auf Strings und pos() etc läuft in 16-Bit Codes. Das muss dem Anwender klar sein.mse hat geschrieben:Was meinst du damit? Was utf-16 bedeutet ist doch klar?
Das Problem damit ist eben nur, dass diese Zeichen-Extraktion mittels Index bei UTF-16 so nicht funktioniert. (Sobald z.B. Smileys im Text sind ...)mse hat geschrieben:Ich zitiere von hier:Also:mse hat geschrieben: Ich finde die FPC 2.6 Lösung Ideal, ein utf-16 string für reinen Text der für praktisch alle Anwendungen die Zeichen-Extraktion mittels Index zulässt und ein 8-Bit string der in der Regel Text in der Systemcodierung enthält, aber auch binäre Daten oder beliebige 8-bit-Codierungen enthalten kann, mit automatischer Umwandlung zwischen Systemcodierung <> utf-16. Wobei man über letzteres bereits diskutieren kann. Ich bin noch nicht sicher, ob das im MSEcompiler implementiert wird.
Reiner Text wird in UnicodeString gespeichert. UnicodeString ist utf-16 codiert.
Solange man nach bekannten Zeichen sucht funktioniert das schon. Mit utf-16 mit codepoints von #$0000 bis #$d7ff, das heisst die gesamte Basic Multilingual Plane, mit utf-8 #$00 bis #$7f das heisst ASCII.Patito hat geschrieben: Das Problem damit ist eben nur, dass diese Zeichen-Extraktion mittels Index bei UTF-16 so nicht funktioniert. (Sobald z.B. Smileys im Text sind ...)
Für mich ist das Quatsch. utf-8 ist am besten geeignet für den Datenaustausch, MSEgui benutzt für Dateien und Inter-Prozess-Kommunikation nach Möglichkeit utf-8, utf-8 ist aber sicher nicht überall die geeignetste Codierung.Ansonsten:
http://www.utf8everywhere.org/
Gut. Der Index funktioniert für UCS-2. Für UTF-16 funktioniert er eben leider nicht... da kann man das Wort Basic Multilingual Plane so oft schreiben wie man will, für UTF-16 funktioniert der Index trotzdem nicht.mse hat geschrieben: Solange man nach bekannten Zeichen sucht funktioniert das schon. Mit utf-16 mit codepoints von #$0000 bis #$d7ff, das heisst die gesamte Basic Multilingual Plane, mit utf-8 #$00 bis #$7f das heisst ASCII.
Es gibt da recht konkrete Argumente für UTF-8. Das pauschal als Quatsch abzutun ist etwas gewagt. Ein wirkliches Argument, das UTF-16 intern irgendwie besser wäre hab ich aber noch nicht gesehen. Dein Argument (einfache Zeichen-Extraktion mittels Index) funktioniert bei UTF-16 einfach nicht, da UTF-16 eben kein UCS-2 ist.mse hat geschrieben:Für mich ist das Quatsch. utf-8 ist am besten geeignet für den Datenaustausch, MSEgui benutzt für Dateien und Inter-Prozess-Kommunikation nach Möglichkeit utf-8, utf-8 ist aber sicher nicht überall die geeignetste Codierung.Patito hat geschrieben:Ansonsten:
http://www.utf8everywhere.org/
Ich bin auch für eine ehrliche Namensgebung also "UTF16String" und "ByteString".Patito hat geschrieben:UnicodeString als Synonym für UTF-16 zu nehmen ist von der Namensgebung irgendwie falsch.
Ist bei Microsoft aber die generelle Vorgabe. Die mögen zwar problematisch sein, aber ganz blöd sind die auch nicht.Patito hat geschrieben: Ein wirkliches Argument, das UTF-16 intern irgendwie besser wäre hab ich aber noch nicht gesehen.
Stimmt, und muss deshalb in der Doku dick vermerkt werden. Aber da es in Europa in den allermeisten Praxis-Fällen funktioniert, ist es eine recht pragmatische Lösung. (Kaum jemand benutzt gleichzeitig Smilies und explizite String-Indizes.)Patito hat geschrieben:MSE's Argument (einfache Zeichen-Extraktion mittels Index) funktioniert bei UTF-16 einfach nicht, da UTF-16 eben kein UCS-2 ist.
Denkst Du...mschnell hat geschrieben: Ist bei Microsoft aber die generelle Vorgabe. Die mögen zwar problematisch sein, aber ganz blöd sind die auch nicht.
Sich darauf zu verlassen, dass man nur UCS-2 braucht ist aber nicht pragmatisch sondern eher eine Sollbruchstelle. Unicode ist ein Standard, der in Bewegung ist. Es gibt ständig Updates der Character-Liste und die werden nicht gerade versuchen möglicst unpopuläre Buchstaben hinzuzufügen nur damit halbgarer alter Code nicht auseinanderfällt. Die neuen Emoticons sind in manchen Bereichen schon populärer als so manches seltene ASCII-Zeichen...mschnell hat geschrieben: Aber da es in Europa in den allermeisten Praxis-Fällen funktioniert, ist es eine recht pragmatische Lösung. (Kaum jemand benutzt gleichzeitig Smilies und explizite String-Indizes.)
Seit wann interessierst du dich für pragmatische Lösungen?mschnell hat geschrieben: Aber da es in Europa in den allermeisten Praxis-Fällen funktioniert, ist es eine recht pragmatische Lösung.