![]() |
Doppeldeutiger überladener Aufruf nach Unicode-Umstellung
Moin,
ich habe mal wieder ein Problem mit dem Umstieg von Tnt-Unicode auf RAD2009. Meine TTntComboBox ist jetzt so deklariert:
Delphi-Quellcode:
Nun bekomme ich beim Aufruf
TTntComboBox = class(TComboBox);
Delphi-Quellcode:
den beschriebenen Fehler vom Compiler.
const
s = WideString('irgendwas'); if pos(s,ComboBox1.Items.Strings[0]) then begin //machwas end; Wenn ich Pos() durch AnsiPos() ersetze, tritt der Fehler nicht mehr auf. Das ist aber inhaltlich nicht richtig, da ich durchaus auch mal kyrillisch in der ComboBox stehen habe. Ich peil' es nicht: durch die Umleitung auf TComboBox müsste doch Unicode in den Items enthalten sein. Oder ist darin anderes Unicode als in meiner Konstante s? Grüße, Messie |
Re: Doppeldeutiger überladener Aufruf nach Unicode-Umstellun
Versuch mal eine typisierte Konstante: (ich armer D5 Anwender kann's nicht testen)
Delphi-Quellcode:
Dein Codeschnipsel hat übrigens einen Fehler in der If-Bedingung.
const
s : WideString = 'irgendwas'; if pos(s,ComboBox1.Items.Strings[0]) <> 0 then begin //machwas end; |
Re: Doppeldeutiger überladener Aufruf nach Unicode-Umstellun
Dabei musst du aber beachten, dass AnsiPos() eine Unicode-Funktion und kein Ansi-Funktion ist, auch wenn der namen etwas anderes suggeriert.
|
Re: Doppeldeutiger überladener Aufruf nach Unicode-Umstellun
Der Unterschied ist, dass die TntControls und deine Variable WideStrings nutzen bzw. sind. Diese sind vom System bereitgestellte Unicodezeichenketten.
Delphi 2009 wiederum benutzt UnicodeString, welches eine delphiinterne Zeichenkette wie auch AnsiStrings sind (inkl. Referenzzähler usw.). Deshalb muss ein WideString implizit konvertiert werden und da gibt es vermutlich verschiedene Varianten von Pos, die da in Frage kommen. |
Re: Doppeldeutiger überladener Aufruf nach Unicode-Umstellun
Zitat:
Wenn die Beschreibung von mkinzler zutrifft, wird die Funktion AnsiPos für mich die richtige sein. Ich werde die Varianten mal testen. Die Haptik des Unicode-Handlings in 2009 finde ich aber ehrlich gesagt katastrophal. Grüße, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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