![]() |
Unicode Zeichen 1/3 als ein Zeichen darstellen
Hallo,
hat jemand eine Idee wie man 1/3 als ein Zeichen darstellen kann? Ich habe schon vieles versucht, aber ohne Erfolg. Z.B.:
Delphi-Quellcode:
Alles hat nicht funktioniert und mir wurde nur ein viereck angezeigt.
Edit1.Text := chr($2153);
/// <summary> /// U+2153 ⅓ e2 85 93 VULGAR FRACTION ONE THIRD /// </summary> VULGAR_FRACTION_ONE_THIRD: Cardinal = $e28593; Edit1.Text := AnsiChar(VULGAR_FRACTION_ONE_THIRD); Zu allem Trotz :evil: kann man 1/8 darstellen ob wohl man das viel seltener braucht.
Delphi-Quellcode:
Hat jemand eine Idee von euch?
Edit1.Text := chr($215b);
|
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Delphi-Quellcode:
dürfte Teil des Problems sein. Schon ohne den Typecast probiert?
AnsiChar(VULGAR_FRACTION_ONE_THIRD);
Nebenbei: Welche Delphiversion? |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
AnsiChar ginge eh nicht, da es nur bis $ff Platz hat. :zwinker:
und auch $e28593 geht überhaupt nicht, da WideChar ebenso nur nur bis $ffff reicht. Bei soeinem großen Wert kannst du es nur mit Surrogate-Pairs versuchen und dann benötigst du auch noch einen Font, welcher dieses Zeichen enthält (wenn überhaupt, bieten die meisten Fonst nur Zeichen bis unter $ffff. Ich bin mir aber sicher, daß es ein Zeichen, wie 1/3 schon in diesesm unteren Bereich gibt. Oder du nimmst einen Mathe-Font, welcher diese Zeichen direkt im Bereich $20 bis $ff anbietet, wie es z.B. auch bei Marlett und Co. der Fall ist. Also
Delphi-Quellcode:
wäre schon richtig gewesen (bei Delphi ab Version 2009.
chr($2153);
Bis Delphi 2007 müßte man mit speziellen Unicode-Controls nachrüsten (elPack oder TNTUnicodeControls) Und wie kommst du eigentlich von $2153 auf $e28593 :?: |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Zitat:
Code:
... e2 85 93 :roll:
/// U+2153 ⅓ e2 85 93 VULGAR FRACTION ONE THIRD
|
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Ich benutze Delphi2010 also eigentlich sollte es ja UTF8 beherschen.
Aber die Wirklichkeit sieht anders aus. Ich habe zu erst auf eine UTF-8 Codepage geschaut um mir die richtigen Symbole dafür zu suchen. hier mein Link: ![]() Da stehen die Hexadezimal Werte für die entsprechenden Symbole. Übrigens ein Type Cast mit AnsiChar funktioniert, aber wahrscheinlich nur in den unteren Bereichen einer Codepage.
Delphi-Quellcode:
Könntest du mir vllt ein Beispiel für eine Surrogate Berechnung geben?
/// <summary>
/// U+00BC ¼ c2 bc VULGAR FRACTION ONE QUARTER = 1/4 /// </summary> VULGAR_FRACTION_ONE_QUARTER: Cardinal = $c2bc; Edit1.Text := AnsiChar(VULGAR_FRACTION_ONE_QUARTER); |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Wenn ich ein Math Font nehmen würde, dann müsste ich diese Schriftart doch auf jedem Rechner wo mein Programm laufen soll installieren oder?
Und bei vielen PC's wäre das ein zu hoher Konfigurationsaufwand. |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
aso, das war UTF-8
Wenn schon UTF-8, dann muß dieses in einen UTF8String rein (dann kodiert es Delphi automatisch nach Unicode, welches dein Edit haben möchte) oder decodierst es manuell via UTF8Decode (in beiden Fällen ist ein Zweierpaar jeweils ein Zeichen/AnsiChar/Byte, also Unicode #$2153 oder #8531 = UTF-8 #$e2#$85#$93) oder du läßt es gleich Unicode. Zitat:
|
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Bitte lies doch erstmal unsere Antworten. Himitsu hat sich sogar noch mehr Mühe gegeben als ich mit seiner Antwort und alles relevant steht schon drin. Insbesondere:
Delphi-Quellcode:
chr($2153);
Zitat:
Zitat:
Zitat:
@Himitsu: er hat nen Literal den er in einem String (sprich: WideString) verarbeiten will. Wo ist da etwas von UTF-8 zu sehen? Ich seh jedenfalls nix dergleichen. |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Zitat:
Für Delphi/.NET ist es sinnvoll UTF16 zu verwenden da die ganze Win32-API seit "gedenken" (müsste W2k sein) UTF16 verwendet. Davor wurde "nur" UCS-2 verwendet. Wenn deine IDE/Quellcodedateien richtig einstellt sind brauchst du nix machen (Sollte ab D2009 funktionieren):
Delphi-Quellcode:
Du wirst als "altpropertie" noch Teilweise Codpage/Charset find (im Font-Object). Dies solltest du niemals mehr verwenden/umstellen wenn du eine neue IDE-Version hast.
VULGAR_FRACTION_ONE_QUARTER: Cardinal = $c2bc;
Edit1.Text := VULGAR_FRACTION_ONE_QUARTER; |
AW: Unicode Zeichen 1/3 als ein Zeichen darstellen
Ich habe übrigens jede Konvertierung genutzt WideChar, WideString, AnsiChar, AnsiString, UnicodeString, UTF8To.., alles hat nix geholfen. Bitte probiert es doch selbst, wenn ihr mir nicht glaubt.
Bedenkt aber dabei das ich stets zum ausprobieren ein TEdit genutzt habe. Vllt. liegt es auch an dieser Komponente, ich weis es nicht. Was mir aber eher wahrscheinlich ist, dass Delphi die genannten Surrogates doch nicht ganz darstellen kann oder es damit eventuelle Probleme gibt. So stellt es sich mir dar. Was meinst du damit das ich andere Fonts benutzen solle, welche sind denn UTF-8 und welche nicht? Ich habe bis jetzt nichts gefunden das Delphi nur einige Fonts in UTF-8 unterstützt. Bitte gib mir ein Beispiel für unterstützte Fonts oder Links damit ich es nach lesen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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