Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erkennen von Unicode ??? (https://www.delphipraxis.net/40613-erkennen-von-unicode.html)

Kedariodakon 18. Feb 2005 08:37


Erkennen von Unicode ???
 
Wenn ich einen Speicherbereich habe, in welchem sich ein String befindet, entweder als Unicode oder normal, kann ich das irgendwie erkennen? :gruebel:


Bye

Sanchez 18. Feb 2005 08:42

Re: Erkennen von Unicode ???
 
Ja,
Mit unserem Schriftsatz hat bei einem Unicode-String jedes zweite Byte den Wert 0.

Kedariodakon 18. Feb 2005 08:55

Re: Erkennen von Unicode ???
 
Zitat:

Zitat von Sanchez
Ja,
Mit unserem Schriftsatz hat bei einem Unicode-String jedes zweite Byte den Wert 0.

Und wenn es ein Russischer, Türkischer, Japanischer oder Chinesischer ist?
Meinte die Frage auf generelle Unicode-Schriftsätze.

Bye

Bernhard Geyer 18. Feb 2005 08:55

Re: Erkennen von Unicode ???
 
Zitat:

Zitat von Kedariodakon
Wenn ich einen Speicherbereich habe, in welchem sich ein String befindet, entweder als Unicode oder normal, kann ich das irgendwie erkennen?

Eine Ansi-String wird mit einem 1-Byte langen $00 abgeschlossen, ein WideString mit $0000.

Zitat:

Zitat von Sanchez
Ja,
Mit unserem Schriftsatz hat bei einem Unicode-String jedes zweite Byte den Wert 0.

Das stimmt nur wenn der String Zeichen aus dem Bereich "Basic Latin" und "Latin-1 Supplement" beinhaltet.

Kedariodakon 18. Feb 2005 08:57

Re: Erkennen von Unicode ???
 
Zitat:

Zitat von Bernhard Geyer
Eine Ansi-String wird mit einem 1-Byte langen $00 abgeschlossen, ein WideString mit $0000.

Ok das ist schon mal was, nur weiß ich nicht ob ich immer so ein Abschlusszeichen mitbekomm :roll:
Wenn ich dieses Word nicht hab, kann mans auch nicht erkennen korrekt?

Bye

SubData 18. Feb 2005 09:02

Re: Erkennen von Unicode ???
 
Das Ding musst du haben sonst ist es kein gültiger String...

Muetze1 18. Feb 2005 11:04

Re: Erkennen von Unicode ???
 
Moin!

Wieso fragt ihr nich einfach Windows? IsTextUnicode

MfG
Muetze1

himitsu 18. Feb 2005 11:29

Re: Erkennen von Unicode ???
 
Zitat:

Zitat von Bernhard Geyer
Eine Ansi-String wird mit einem 1-Byte langen $0 abgeschlossen, ein WideString mit $0000.

Nicht immer, es gibt Sonderfälle, wo selbst Ansistrings (UCS1)
mit zwei #0 geschlossen werden (wenn ich dann mal meine Utilities vorstelle, werdet ihr das merken, weil ich auch Sonderfälle unterstütze :zwinker: )

Das Beste ist wohl Windows zu fragen (wie schon erwähnt)


PS: im Speicher muß nicht jeder String, egal ob Ansi, Wide oder Long mit #0 geschlossen werden. (z.B. wenn der String 'ne Längenangabe beinhaltet und daher keinen derartigen Abschluß benötigt)

Aber wenn du Glück hast, dann wird der Widestring mit #FEFF eingeführt, was ich im Speicher aber nicht vermute (dieses ist aber die Kenzeichnung für Unicode[2]-Textdateien)

Bernhard Geyer 18. Feb 2005 11:37

Re: Erkennen von Unicode ???
 
Zitat:

Zitat von himitsu
Nicht immer, es gibt Sonderfälle, wo selbst Ansistrings (UCS1) mit zwei #0 geschlossen werden (wenn ich dann mal meine Utilities vorstelle, werdet ihr das merken, weil ich auch Sonderfälle unterstütze :zwinker: )

Kannte ich noch nicht[/quote]

Zitat:

Zitat von himitsu
Das Beste ist wohl Windows zu fragen (wie schon erwähnt)

Und hoffen das es auf jeder Windows-Version gleich läuft ;-)

Zitat:

Zitat von himitsu
PS: im Speicher muß nicht jeder String, egal ob Ansi, Wide oder Long mit #0 geschlossen werden. (z.B. wenn der String 'ne Längenangabe beinhaltet und daher keinen derartigen Abschluß benötigt)

Aber wenn er in Richtung Win32-API verwendet werden soll schon. PWideChars benötigen diesen Abschluss. Und ohne kracht es.

Zitat:

Zitat von himitsu
Aber wenn du Glück hast, dann wird der Widestring mit #FEFF eingeführt, was ich im Speicher aber nicht vermute (dieses ist aber die Kenzeichnung für Unicode[2]-Textdateien)

Glaube ich nicht #FEFF ist nur die Kennzeichnung der Byte-Order in der Textdatei (Stichwort: Big/Little-Endian)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 Uhr.

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