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.
MSElang, der zukünftige Compiler für MSEide+MSEgui
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
Weiß ich.mse hat geschrieben:Ich auch.
Aber im "MSElang" Prospekt steht nichts davon sondern dass alles möglichst wenig überladen werden soll. Und ich weiß aus vielen Diskussionen, dass Du für Zeichenketten UTF16 bevorzugst. Da könnten uncodierte 8-Bit Strings als weniger wichtig erkannt werden.
-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: MSElang, der zukünftige Compiler für MSEide+MSEgui
Ich habe den Text angepasst.
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
"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.
Ich vermute Du meinst :
- Druckbare/anzeigbare Text-Strings sind immer UTF-16 kodiert, Codepoints > 2^15 sind erlaubt, werden aber vom System nicht explizit unterstützt. Die implizite Zeichen-Zählung in diesen Strings ist in 16-Bit Worden organisiert.
- Für allgemeine Datenspeicherung wird zusätzlich ein Byte-String Typ ohne nativ interpretierbare Kodierung definiert. Die implizite Zeichen-Zählung in diesen Strings ist in 8-Bit ytes organisiert. Byte-Strings könnnen ANSI-Kodierte Daten enthalten. Die "Codepage" ist dem Benutzer freigestellt und dem System nicht bekannt. Um diese Strings anzuzeigen, müssen explizit RTL-Funktionen aufgerufen werden, die eine Umwandling in 16 Bit Unicode Strings vornehmen. Dasselbe gilt wenn UTF-8 codierte Daten in solchen Strings gespeichert wird..
(Ich hoffe die Bezeichnung "ANSI" taucht außer in explizit aufrufbaren RTL-Funktionen zum Unkodieren nirgends auf !!!! )
Das halte ich für einen sehr pragmatischen Ansatz. Dadurch dass 8-Bit Strings nicht direkt anzeigbar sind wird die "ANSI-Codepage" und UTF-8-Zeichenzählung"s - Verwirrung minimiert.
Unicode-Experten werden sich grausen.
-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: MSElang, der zukünftige Compiler für MSEide+MSEgui
Ich zitiere von hier:
http://www.lazarusforum.de/viewtopic.php?f=53&t=7313
Reiner Text wird in UnicodeString gespeichert. UnicodeString ist utf-16 codiert.
Für 8-bit Text und/oder Daten gibt es weitere String Typen, die Delphi 7 "AnsiString", auch shortstrings gedenke ich beizubehalten.
Ich würde gerne für Arrays und Strings einheitlich nullbasierende Indizes verwenden. wird zu
http://www.lazarusforum.de/viewtopic.php?f=53&t=7313
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.
Für 8-bit Text und/oder Daten gibt es weitere String Typen, die Delphi 7 "AnsiString", auch shortstrings gedenke ich beizubehalten.
Ich würde gerne für Arrays und Strings einheitlich nullbasierende Indizes verwenden.
Code: Alles auswählen
array[0..9] of integer;Code: Alles auswählen
array[10] of integer;-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
-Michael
Zuletzt geändert von mschnell am Mo 4. Nov 2013, 13:41, insgesamt 4-mal geändert.
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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?
-Michael
Zuletzt geändert von mschnell am Mo 4. Nov 2013, 13:47, insgesamt 1-mal geändert.
-
Patito
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
http://www.delphitools.info/2013/10/11/ ... iacritics/
UnicodeString als Synonym für UTF-16 zu nehmen ist von der Namensgebung irgendwie falsch. An manchen Stellen mag ein UTF-16 String zwar brauchbar sein, und man sollte so einen Typ irgendwo implementieren, aber technologisch ist UTF-16 doch die Unicode Encoding, die am wenigsten Sinn ergiebt. UTF-32 (als direkte Liste von Unicode-Code-Point-Integern) hätte die Bezeichnung UnicodeString wohl am ehesten verdient.
Ansonsten:
http://www.utf8everywhere.org/
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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/
-
Patito
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: MSElang, der zukünftige Compiler für MSEide+MSEgui
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/
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
Der entsprechende Character sollte dann "UTF16Char" bzw "Byte" heißen.
Eine Namensgebung mit "Unicode" oder "ANSI" finde ich hochgradig verwirrend, weil weder Unicode noch ANSI ohne zusätzliche Angabe eindeutig spezifiziert ist. ("String", "ANSIString" und "UnicodeString" gehen ehrlicherweise nur bei "code aware" String Typen).
Ich würde in jedem Fall auch komplett neue Namen nehmen und die überfrachteten Namen aus Delphi und FPC (wie "String", ANSIString, ..." komplett vermeiden. Wer ein Programm portiert kann leicht eine Zeile
{$ifdef MSElang} Type String = UTF16String; ...
einbauen.
Dadurch kann auch mse später bei Bedarf immer noch Delphi oder fpc kompatible String Typen zusätzlich implementieren.
-Michael
Zuletzt geändert von mschnell am Mo 4. Nov 2013, 14:08, insgesamt 4-mal geändert.
-
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: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
-Michael
-
Patito
- Beiträge: 203
- Registriert: Di 22. Sep 2009, 13:08
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.)
Re: MSElang, der zukünftige Compiler für MSEide+MSEgui
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.
Dachte immer dir geht es nur ums rumeiern.