Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#1

Ansi/Unicode-Char-Index umrechnen

  Alt 22. Sep 2010, 08:31
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Sep 2010 um 08:41 Uhr)
  Mit Zitat antworten Zitat