baka0815 hat folgendes geschrieben: |
Copy(Str, n, 1) wird dir also immer das nte Zeichen zurückliefern. |
Danke. Die Funktionene
Copy und
Pos funktionieren einwandfrei, das ist mir im Nachhinein aufgefallen. Der WideString wird in der korrekten Reihenfolge geschrieben und auch angezeigt. Das Trennen ist also doch nicht das Problem. Das Problem ist, dass ich nicht weiss, wie der WideString in der visuellen Komponente dargestellt wird.
Interessant wird es nämlich bei Schriften, die von rechts-nach-links geschrieben werden. Diese werden nämlich wirklich von rechts-nach-links dargestellt. Hier ein Beispiel:
Zitat: |
Normaler Text arabisch und nochmal normaler Text. //Geschriebene Reihenfolge
Normaler Text hcsibara und nochmal normaler Text. //Dargestellte Reihenfolge
|
Wenn ich den WideString nun mit
For i:=1 to Length(WideString) durchlaufe, wird immer die geschriebene Reihenfolge zurückgeliefert.
Wenn ich nun jeden Buchstaben in der Zelle eines StringGrids anzeigen lasse, wird die "Geschriebene Reihenfolge" angezeigt, ich möchte jedoch die "Dargestellte Reihenfolge" anzeigen
Wahrscheinlich hab ich mich da zu sehr in etwas festgefahren.
Ich hab's jetzt vorläufig mit folgendem Ansatz gelöst:
Der WideString wird in UTF8 konvertiert. Dann überprüfe ich einfach für jedes Zeichen, um welche Schriftart es sich handelt und und sortiere den Text dementsprechend. Das funktioniertiert zwar, jedoch bin ich mir nicht sicher, ob der Text auch auf wirklich auf jedem PC bidirektional angezeigt wird. Außerdem funktioniert es natürlich nur für Schriftarten, die ich in meinem Programm aufgenommen habe. Ich bräuchte im Grunde eine allgemeine Möglichkeit herauszufinden, in welcher Richtung die Schrift dargestellt wird.
Hintergrund:
Ich möchte in meinem Programm, den Benutzer ein Zeichen wählen lassen, ab dem der String in zwei Teile getrennt wird. Vielleicht mache ich es doch so, dass einfach in einer Edit-Box das entsprechende Zeichen markiert wird, dann spar ich mir den ganzen Ärger
Edit
Hab gerade folgendes gefunden:
wiki hat folgendes geschrieben: |
A language is described as Text direction RTL right to left if writing starts from the right of the page, and continues to the left. Right to left scripts are:
Arabic alphabet - used for Arabic, Persian, Urdu and many other languages.
Hebrew alphabet - used for Hebrew, Yiddish and some other Jewish languages.
Syriac alphabet - used for varieties of the Syriac language.
Thaana - used for Dhivehi.
N'Ko script - used for several languages of Africa. |
Die ersten vier unterstütze ich sowieso schon in meinem Programm. Ehrlichgesagt brauche ich normalerweise keine der Schriften, aber ich bin Perfektionist

Und wenns wirklich nur die fünf sind, kann ich diese bidirektional anzeigen lassen. Vielleicht mache ich das ganze auch optional.
Viele Grüße