![]() |
widestring
Hallo,
sagt mal, wie muss ich mir eigentlich den WideString-Typ vorstellen? Das ist doch Unicode, oder? Wieviele Bytes werden da pro Zeichen verwendet? Habe neulich gelesen, dass es auch bei Unicode nochmal Unterscheidungen zwischen den einzelnen Formaten gibt. Welches wird denn da bei WideString verwendet? Weiß das einer? Danke, Martin |
Re: widestring
der WideString ist im UCS2-Format, also 2 Byte pro Zeichen.
Allerdings ist der nicht wie der AnsiString ein "Delphi-eigenes Format", sonder wird über einen OLE-String gehandhabt, was auch erklärt warum die WideStrings keine Referenzzählung besitzen :cry: Für's neuere UCS4 gibt es in Delphi leider auch noch keine Möglichkeiten -.-'' |
Re: widestring
Zitat:
Zitat:
Zitat:
|
Re: widestring
hmmm
von ole hab ich auch schon mal was gehört; aber was es damit auf hat war mir bisher immer ein rätsel würd's dir was ausmachen, mir noch zu erklären, was du mit der referenzzählung meinst? Zitat:
Ist UCS2 auch so ein Speicherformat oder is das wieder was anderes? |
Re: widestring
|
Re: widestring
Stimmt nicht ganz, es gibt inzwischen Möglichkeiten die UCS4-Zeichen darzustellen, nur hab ich bisher selber noch nicht rausfinden konnte wie das möglich ist, aber dafür daß es geht gibt es Beweise ... das Program CharMap z.B.
Delphi-Quellcode:
tja und darum funktioniert meine Unicodversion vom Opendialog nicht in den alten WindowsVersionen, diese haben zwar schon die API-Funktionen drin, aber leider sind diese total lehr, so daß es nichtmal ein Fehler gibt, wenn man diese aufruft, es passiert halt einfach nur nichts :cry:
Erst ab W2K. NT kennt UCS2 nicht.
Der OLE-String wird von der OLE32.dll verwaltet ... delphi leitet einfach alle nötigen Aufrufe an diese DLL weiter ... es verwaltet den String halt nicht selber, so wie es z.B. beim AnsiString der Fall ist. UCS2 ist einfach nur ein nur ein UniCodeString mit 2 Bytes pro Zeichen, halt von den Daten her das selbe, wie es im WideString vorkommt Beim UTF8 kann man alle Zeichen codieren, wobei ein Zeichen keine feste Länge hat, wärend ANSI/ASCII/UCS1/UCS2/UCS4 eine feste Länge haben (beim ANSI gibts aber auch ausnahmen, da dieses eigentlich auch ein Multibytezeichensatz ist, aber ich kenne noch keine Sprache/Codetabelle, wo dieses auch genutzt wird) |
Re: widestring
Zitat:
|
Re: widestring
Zitat:
(ich geb zu meine codes sind das auch nicht alle, aber ich versuche das Stück für Stück zu beheben) |
Re: widestring
Zitat:
|
Re: widestring
Das ist jetzt auch ein Grund, warum ich seit 'ner Weile versuche von ANSI Abstand zu nehmen, also entweder richtig Unicode (UCS2) zu verwenden und wenn schon 1-Byte, dann ASCII, oder ähnliches, aber halt nichts MultiByte-mäßiges ... dann hat man da zumindestens keine Probleme in dieser Richtung mehr ^^ (nur schade daß Delphi standardmäßig ANSI will -.-'')
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz