Moin,
mal angenommen ich haben einen AnsiString mit irgendeiner CodePage, welcher nach
Unicode umgewandelt wurde (MultiByteToWideChar).
In dem
Unicode-String haben ich eine bestimmte Stelle gefunden und möchte/muß nun aber wissen welche Stelle dieses im AnsiString ist/war.
Wie könnte man nun also möglichst optimal/einfach diesen Index umrechnen?
Aktuell werde ich mir wohl gleich eine Funktion schreiben, welche per CharNextExA im AnsiString, via PAnsiChar, x Zeichen (dem
Unicode-Index entsprechend) abzählt und dann den Index ausrechnet (String-Start - aktuelle Position).
Nur hab ich jetzt schon die Befürchtung, daß es nicht so richtig funktionieren wird.
Aber geht das noch einfacher?
Das Problem ist, daß zwar (meistens) jedes
Ansi/Multibyte-Zeichen ein bestimmtes Unicodezeichen representiert, aber nicht jedes Unicodezeichen durch nur
ein Ansi/Multibyte-Zeichen representiert werden kann.
Also kann ich doch nicht einfach WideCharToMultiByte verwenden und mir einen Wert liefern lassen, da die Rückrechnung nicht unbedingt den selben String ergeben muß, wie der Ausgangs-AnsiString?
Ursache sind vorallem die "bösen" Composite-Characters.