Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pos() oder AnsiPos()? (https://www.delphipraxis.net/125919-pos-oder-ansipos.html)

nicodex 15. Dez 2008 18:05

Re: Pos() oder AnsiPos()?
 
Zitat:

Zitat von jbg
UTF16 hat nun mal den Vorteil, dass man sich durch die Char-Sequenz angeln kann ohne dass man Probleme bekommt, wenn man auf ein High oder Low Surogate Zeichen stößt.

UTF-16 hat auch Low/High-Surrogates, um Zeichen jenseits der BMP zu codieren (wird von Windows XP und Office unterstützt).

edit: Ich wollte nur darauf hinweisen, dass die Funktionen UCS-2 anstatt UTF-16 implementieren. Egal.

jbg 15. Dez 2008 18:25

Re: Pos() oder AnsiPos()?
 
Zitat:

Zitat von nicodex
UTF-16[/url] hat auch Low/High-Surrogates, um Zeichen jenseits der BMP zu codieren (wird von Windows XP und Office unterstützt).

Hab ich denn was anderes behauptet? Bei UTF16 kann man aber beim Durchparsen des Strings die Surrogates ignorieren, da sie es keine Überschneidung mit der BMP gibt. Bei ANSI gibt es jedoch Überschneidungen bei den Tail-Bytes. Auf mehr wollte ich (und bin ich nicht) hinaus.

messie 2. Jul 2009 09:53

Re: Pos() oder AnsiPos()?
 
Zitat:

Zitat von mkinzler
Aber String (ab D2009) = UnicodeString <> WideString

Ich muss das hier mal wieder aufwärmen, weil ich bei der Umstellung auf 2009 drüber stolpere:
der Compiler wirft mir vor: doppeldeutiger überladener Aufruf von 'Pos'. Die Codezeile:
Delphi-Quellcode:
Pos(WideText,ComboBox1.Items.Strings[i])
Ich fühle mich nicht schuldig.
WideText ist deklariert als WideText = WideString('Hello World'), was mir in der IDE als string angegeben wird, Die ComboBox ist eine TTntComboBox, die auch echte Widestrings liefert(IDE: "Returns System.string").
Offensichtlich macht 2009 einen falschen Redirect (ein cast ist das ja nicht wirklich) auf string, denn
Delphi-Quellcode:
Pos(WideText,WideString(ComboBox1.Items.Strings[i]))
funktioniert

Wie ist denn der Umgang für D2009 korrekt? Kommt man da ohne Änderungen dran? Denn ich habe das in meinen Quellen oft verwendet.


Grüße, Messie

himitsu 2. Jul 2009 10:33

Re: Pos() oder AnsiPos()?
 
als was ist denn WideText definiert?
ist das eine Konstante?

dann laß mal in D2009 das WideString() dort weg :gruebel:

messie 2. Jul 2009 11:13

Re: Pos() oder AnsiPos()?
 
Zitat:

Zitat von himitsu
dann laß mal in D2009 das WideString() dort weg :gruebel:

Nee, das ist schon da und zwar seit Jahren.

Delphi-Quellcode:
const
  WideText = WideString('Hallo');
Als als typunabhängige Konstante. Und dabei scheint was schief zu gehen, denn
Delphi-Quellcode:
const
  WideText : WideString = WideString('Hallo');
scheint zu klappen.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Seite 2 von 2     12   

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