Griechische Buchstaben in TLabel

Hallo zusammen,

ist es möglich in ein und demselben Label Griechische als auch deutsche Zeichen dar zustellen? Nach der Zeichentabelle von Windows hat die Schriftart Arial ja z.B. da Alpha. Jedoch beim Einfügen dieses Zeichens in den Quellcode ergibt sich lediglich ein Fragezeichen. Ich habe es auch schon mit charset = GREEK_CHARSET probiert, jedoch leider ohne Erfolg.
Kann mir jemand helfen???

Danke im Voraus,
Sebastian

Unicode und Codepages
Hallo Sebastian,

Zur Darstellung von „fremden“ Zeichen gibt es 2 gängige Möglichkeiten:

a) ASCII - Erweiterung (Codepage)
b) Unicode

a) ASCII bezeichnet nur die Zeichen 0 … 127. Alles darüber bis 255 ist abhängig von der vewendeten Codepage (z.B. 1251 für Kyrillisch in Windows glaube ich). In Dos ist wieder eine andere Codepage-Nummer :smile:

Zudem must Du einen Font benutzen, der dieser Codepage entspricht, sonst wird ein alpha als ü oder sonstwas dargestellt.

Eine Codepage die Alpha und ü und ß gleichzeitig enthält gibt es wohl
nicht.

b) Unicode
aus all diesen Problemen, und weil chinesisch (CJK) garnicht in dien 128 Zeichen reinpasst, kristallisiert sichirgendwann Unicode heraus.

-> jedes Zeichen hat 16 bit -> 65.000 Zeichen Möglich.
-> später auch noch 32 bit, aber praktisch sind nur die ersten 65.535 relevant, werden auch als BMP = Basis Multilinguale Page bezeichnet.
-> Ein Einblick z.B. mit Arial Unicode (evt. Erweiterungen bei XP aktivieren)
-> Ein Editor z.B. der Editor von XP
-> Benutzung in Compilern die damit Klarkommen: sie verwenden wide_char anstelle von char, und gut ist.
-> Benutzung in Compilern die nicht damit Klarkommen: z.B. UTF-8 Kodierung verwenden, und Texte in Notpad unter UTF-8 abspeichern, und dann die entsprechend kodierten Segmente mit Copy-Paste in dein Programm einfügen.

Wir haben so unsere Geräte alle „Weltsprachlich“ gemacht, zuletzt gerade heute ging ein Display raus, dass ich vor 6 Jahren entwickelt habe, und wo zufällig noch ein fast ein MB Speicher frei war, um z.B. den Chinesischen Bereich der BMP als 16x16Font rein zu setzen.

Die notwendigen Änderunge beschränken sich je nach güte der Software auf ein paar dutzend Zeilen.

Gruß
achim

ist es möglich in ein und demselben Label Griechische als auch
deutsche Zeichen dar zustellen? Nach der Zeichentabelle von
Windows hat die Schriftart Arial ja z.B. da Alpha. Jedoch
beim Einfügen dieses Zeichens in den Quellcode ergibt sich
lediglich ein Fragezeichen. Ich habe es auch schon mit charset
= GREEK_CHARSET probiert, jedoch leider ohne Erfolg.
Kann mir jemand helfen???

Danke im Voraus,
Sebastian

Hallo Sebastian,

Zur Darstellung von „fremden“ Zeichen gibt es 2 gängige
Möglichkeiten:

a) ASCII - Erweiterung (Codepage)
b) Unicode

Eine Codepage die Alpha und ü und ß gleichzeitig enthält gibt
es wohl
nicht.

b) Unicode
aus all diesen Problemen, und weil chinesisch (CJK) garnicht
in dien 128 Zeichen reinpasst, kristallisiert sichirgendwann
Unicode heraus.

-> jedes Zeichen hat 16 bit -> 65.000 Zeichen Möglich.
-> später auch noch 32 bit, aber praktisch sind nur die
ersten 65.535 relevant, werden auch als BMP = Basis
Multilinguale Page bezeichnet.

Danke Achim, dass mit dem ASCII code, habe ich auch schon probiert. Im ASCII Code sind jedoch keine griechische Buchstaben vorhanden (www.torsten-horn.de/techdocs/ascii.htm). Verstehe nicht ganz,was du mit „Erweiterung“ meinst…

Der Vorschlag mit dem Editor ist mir auch nicht ganz klar. Ich arbeite mit BCB6 und bin doch an den dortigen Editor gebunden. (sorry, hätte ich von Anfang an schreiben sollen)

Die Eigenschaft ->Caption eines TLabels erwartet einen AnsiString. D.h. griechische Buchstaben sind nicht möglich, und der Editor kommt damit auch nicht klar.
Die einzige Möglichkeit, die ich jetzt sehe und wo ich nicht verstehe, dass das nicht funktioniert, ist wenn man einfach z.B. den Zeichensatz (charset)von Label1 auf griechisch setzt und dann einfach Label1->Caption=„a“; schreibt. Jedoch wird mir da auch nur ein „a“ angezeigt, anstatt einem Alpha.

Gruß Sebastian

Gruß Sebastin

Hallo Sebastian,

Versuch einer Antwort:

  1. A und Alpha unterscheiden sich bei ANSI-Zeichensätzen eben nur durch den Zeichensatz, oder man verwendet UniCode.

  2. TLabel kann keine UNiCode-Strings.

  3. Bleibt die Unterscheidung durch CHARSET in der Windows-Logfont-Struktur, aber das heisst, das es sich um 2 verschiedene logische Fonts handelt. (Auch wenn im System ein Unicode-Font zur Anzeige verwendet wird!). Da TLabel nicht mit 2 Fonts arbeitet, geht das nicht, was du möchtest, es sei denn, du findest einen CHARSET mit lateinisch und griechisch gleichzeitig (möglicherweise mathematische Zeichensätze?). Ist mir im Moment keiner bekannt, aber für Mathematiker ist das schon möglich.

Übrigens ist der Windows CHARSET nicht identisch mit den Codepages, aber ähnlich; näheres siehe z. B. bei Petzold:

http://www.microsoft.com/mspress/books/sampchap/2344…

Im Notfall kannst du selbst eine Komponente TLAbelInternational programmieren.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo zusammen,

ist es möglich in ein und demselben Label Griechische als auch
deutsche Zeichen dar zustellen?

Hallo Sebastian,

anscheinend enthält GREEK_CHARSET doch Lateinisch UND Griechisch, es geht also, aber die griechischen Buchstaben sind oberhalb 128 (also fallen Ihnen die Umlaute zum Opfer). Meistens wird das nicht weiter erläutert, aber probier es mal nach folgender Tabelle:

Name: cp1253 to Unicode table

Unicode version: 2.0

Table version: 2.01

Table format: Format A

Date: 04/15/98

Contact: [email protected]

General notes: none

Format: Three tab-separated columns

Column #1 is the cp1253 code (in hex)

Column #2 is the Unicode (in hex as 0xXXXX)

Column #3 is the Unicode name (follows a comment sign, ‚#‘)

The entries are in cp1253 order

0x00 0x0000 #NULL
0x01 0x0001 #START OF HEADING
0x02 0x0002 #START OF TEXT
0x03 0x0003 #END OF TEXT
0x04 0x0004 #END OF TRANSMISSION
0x05 0x0005 #ENQUIRY
0x06 0x0006 #ACKNOWLEDGE
0x07 0x0007 #BELL
0x08 0x0008 #BACKSPACE
0x09 0x0009 #HORIZONTAL TABULATION
0x0A 0x000A #LINE FEED
0x0B 0x000B #VERTICAL TABULATION
0x0C 0x000C #FORM FEED
0x0D 0x000D #CARRIAGE RETURN
0x0E 0x000E #SHIFT OUT
0x0F 0x000F #SHIFT IN
0x10 0x0010 #DATA LINK ESCAPE
0x11 0x0011 #DEVICE CONTROL ONE
0x12 0x0012 #DEVICE CONTROL TWO
0x13 0x0013 #DEVICE CONTROL THREE
0x14 0x0014 #DEVICE CONTROL FOUR
0x15 0x0015 #NEGATIVE ACKNOWLEDGE
0x16 0x0016 #SYNCHRONOUS IDLE
0x17 0x0017 #END OF TRANSMISSION BLOCK
0x18 0x0018 #CANCEL
0x19 0x0019 #END OF MEDIUM
0x1A 0x001A #SUBSTITUTE
0x1B 0x001B #ESCAPE
0x1C 0x001C #FILE SEPARATOR
0x1D 0x001D #GROUP SEPARATOR
0x1E 0x001E #RECORD SEPARATOR
0x1F 0x001F #UNIT SEPARATOR
0x20 0x0020 #SPACE
0x21 0x0021 #EXCLAMATION MARK
0x22 0x0022 #QUOTATION MARK
0x23 0x0023 #NUMBER SIGN
0x24 0x0024 #DOLLAR SIGN
0x25 0x0025 #PERCENT SIGN
0x26 0x0026 #AMPERSAND
0x27 0x0027 #APOSTROPHE
0x28 0x0028 #LEFT PARENTHESIS
0x29 0x0029 #RIGHT PARENTHESIS
0x2A 0x002A #ASTERISK
0x2B 0x002B #PLUS SIGN
0x2C 0x002C #COMMA
0x2D 0x002D #HYPHEN-MINUS
0x2E 0x002E #FULL STOP
0x2F 0x002F #SOLIDUS
0x30 0x0030 #DIGIT ZERO
0x31 0x0031 #DIGIT ONE
0x32 0x0032 #DIGIT TWO
0x33 0x0033 #DIGIT THREE
0x34 0x0034 #DIGIT FOUR
0x35 0x0035 #DIGIT FIVE
0x36 0x0036 #DIGIT SIX
0x37 0x0037 #DIGIT SEVEN
0x38 0x0038 #DIGIT EIGHT
0x39 0x0039 #DIGIT NINE
0x3A 0x003A #COLON
0x3B 0x003B #SEMICOLON
0x3C 0x003C #LESS-THAN SIGN
0x3D 0x003D #EQUALS SIGN
0x3E 0x003E #GREATER-THAN SIGN
0x3F 0x003F #QUESTION MARK
0x40 0x0040 #COMMERCIAL AT
0x41 0x0041 #LATIN CAPITAL LETTER A
0x42 0x0042 #LATIN CAPITAL LETTER B
0x43 0x0043 #LATIN CAPITAL LETTER C
0x44 0x0044 #LATIN CAPITAL LETTER D
0x45 0x0045 #LATIN CAPITAL LETTER E
0x46 0x0046 #LATIN CAPITAL LETTER F
0x47 0x0047 #LATIN CAPITAL LETTER G
0x48 0x0048 #LATIN CAPITAL LETTER H
0x49 0x0049 #LATIN CAPITAL LETTER I
0x4A 0x004A #LATIN CAPITAL LETTER J
0x4B 0x004B #LATIN CAPITAL LETTER K
0x4C 0x004C #LATIN CAPITAL LETTER L
0x4D 0x004D #LATIN CAPITAL LETTER M
0x4E 0x004E #LATIN CAPITAL LETTER N
0x4F 0x004F #LATIN CAPITAL LETTER O
0x50 0x0050 #LATIN CAPITAL LETTER P
0x51 0x0051 #LATIN CAPITAL LETTER Q
0x52 0x0052 #LATIN CAPITAL LETTER R
0x53 0x0053 #LATIN CAPITAL LETTER S
0x54 0x0054 #LATIN CAPITAL LETTER T
0x55 0x0055 #LATIN CAPITAL LETTER U
0x56 0x0056 #LATIN CAPITAL LETTER V
0x57 0x0057 #LATIN CAPITAL LETTER W
0x58 0x0058 #LATIN CAPITAL LETTER X
0x59 0x0059 #LATIN CAPITAL LETTER Y
0x5A 0x005A #LATIN CAPITAL LETTER Z
0x5B 0x005B #LEFT SQUARE BRACKET
0x5C 0x005C #REVERSE SOLIDUS
0x5D 0x005D #RIGHT SQUARE BRACKET
0x5E 0x005E #CIRCUMFLEX ACCENT
0x5F 0x005F #LOW LINE
0x60 0x0060 #GRAVE ACCENT
0x61 0x0061 #LATIN SMALL LETTER A
0x62 0x0062 #LATIN SMALL LETTER B
0x63 0x0063 #LATIN SMALL LETTER C
0x64 0x0064 #LATIN SMALL LETTER D
0x65 0x0065 #LATIN SMALL LETTER E
0x66 0x0066 #LATIN SMALL LETTER F
0x67 0x0067 #LATIN SMALL LETTER G
0x68 0x0068 #LATIN SMALL LETTER H
0x69 0x0069 #LATIN SMALL LETTER I
0x6A 0x006A #LATIN SMALL LETTER J
0x6B 0x006B #LATIN SMALL LETTER K
0x6C 0x006C #LATIN SMALL LETTER L
0x6D 0x006D #LATIN SMALL LETTER M
0x6E 0x006E #LATIN SMALL LETTER N
0x6F 0x006F #LATIN SMALL LETTER O
0x70 0x0070 #LATIN SMALL LETTER P
0x71 0x0071 #LATIN SMALL LETTER Q
0x72 0x0072 #LATIN SMALL LETTER R
0x73 0x0073 #LATIN SMALL LETTER S
0x74 0x0074 #LATIN SMALL LETTER T
0x75 0x0075 #LATIN SMALL LETTER U
0x76 0x0076 #LATIN SMALL LETTER V
0x77 0x0077 #LATIN SMALL LETTER W
0x78 0x0078 #LATIN SMALL LETTER X
0x79 0x0079 #LATIN SMALL LETTER Y
0x7A 0x007A #LATIN SMALL LETTER Z
0x7B 0x007B #LEFT CURLY BRACKET
0x7C 0x007C #VERTICAL LINE
0x7D 0x007D #RIGHT CURLY BRACKET
0x7E 0x007E #TILDE
0x7F 0x007F #DELETE
0x80 0x20AC #EURO SIGN
0x81 #UNDEFINED
0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
0x85 0x2026 #HORIZONTAL ELLIPSIS
0x86 0x2020 #DAGGER
0x87 0x2021 #DOUBLE DAGGER
0x88 #UNDEFINED
0x89 0x2030 #PER MILLE SIGN
0x8A #UNDEFINED
0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
0x8C #UNDEFINED
0x8D #UNDEFINED
0x8E #UNDEFINED
0x8F #UNDEFINED
0x90 #UNDEFINED
0x91 0x2018 #LEFT SINGLE QUOTATION MARK
0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
0x93 0x201C #LEFT DOUBLE QUOTATION MARK
0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
0x95 0x2022 #BULLET
0x96 0x2013 #EN DASH
0x97 0x2014 #EM DASH
0x98 #UNDEFINED
0x99 0x2122 #TRADE MARK SIGN
0x9A #UNDEFINED
0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
0x9C #UNDEFINED
0x9D #UNDEFINED
0x9E #UNDEFINED
0x9F #UNDEFINED
0xA0 0x00A0 #NO-BREAK SPACE
0xA1 0x0385 #GREEK DIALYTIKA TONOS
0xA2 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
0xA3 0x00A3 #POUND SIGN
0xA4 0x00A4 #CURRENCY SIGN
0xA5 0x00A5 #YEN SIGN
0xA6 0x00A6 #BROKEN BAR
0xA7 0x00A7 #SECTION SIGN
0xA8 0x00A8 #DIAERESIS
0xA9 0x00A9 #COPYRIGHT SIGN
0xAA #UNDEFINED
0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAC 0x00AC #NOT SIGN
0xAD 0x00AD #SOFT HYPHEN
0xAE 0x00AE #REGISTERED SIGN
0xAF 0x2015 #HORIZONTAL BAR
0xB0 0x00B0 #DEGREE SIGN
0xB1 0x00B1 #PLUS-MINUS SIGN
0xB2 0x00B2 #SUPERSCRIPT TWO
0xB3 0x00B3 #SUPERSCRIPT THREE
0xB4 0x0384 #GREEK TONOS
0xB5 0x00B5 #MICRO SIGN
0xB6 0x00B6 #PILCROW SIGN
0xB7 0x00B7 #MIDDLE DOT
0xB8 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
0xB9 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
0xBA 0x038A #GREEK CAPITAL LETTER IOTA WITH TONOS
0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xBC 0x038C #GREEK CAPITAL LETTER OMICRON WITH TONOS
0xBD 0x00BD #VULGAR FRACTION ONE HALF
0xBE 0x038E #GREEK CAPITAL LETTER UPSILON WITH TONOS
0xBF 0x038F #GREEK CAPITAL LETTER OMEGA WITH TONOS
0xC0 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
0xC1 0x0391 #GREEK CAPITAL LETTER ALPHA
0xC2 0x0392 #GREEK CAPITAL LETTER BETA
0xC3 0x0393 #GREEK CAPITAL LETTER GAMMA
0xC4 0x0394 #GREEK CAPITAL LETTER DELTA
0xC5 0x0395 #GREEK CAPITAL LETTER EPSILON
0xC6 0x0396 #GREEK CAPITAL LETTER ZETA
0xC7 0x0397 #GREEK CAPITAL LETTER ETA
0xC8 0x0398 #GREEK CAPITAL LETTER THETA
0xC9 0x0399 #GREEK CAPITAL LETTER IOTA
0xCA 0x039A #GREEK CAPITAL LETTER KAPPA
0xCB 0x039B #GREEK CAPITAL LETTER LAMDA
0xCC 0x039C #GREEK CAPITAL LETTER MU
0xCD 0x039D #GREEK CAPITAL LETTER NU
0xCE 0x039E #GREEK CAPITAL LETTER XI
0xCF 0x039F #GREEK CAPITAL LETTER OMICRON
0xD0 0x03A0 #GREEK CAPITAL LETTER PI
0xD1 0x03A1 #GREEK CAPITAL LETTER RHO
0xD2 #UNDEFINED
0xD3 0x03A3 #GREEK CAPITAL LETTER SIGMA
0xD4 0x03A4 #GREEK CAPITAL LETTER TAU
0xD5 0x03A5 #GREEK CAPITAL LETTER UPSILON
0xD6 0x03A6 #GREEK CAPITAL LETTER PHI
0xD7 0x03A7 #GREEK CAPITAL LETTER CHI
0xD8 0x03A8 #GREEK CAPITAL LETTER PSI
0xD9 0x03A9 #GREEK CAPITAL LETTER OMEGA
0xDA 0x03AA #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
0xDB 0x03AB #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
0xDC 0x03AC #GREEK SMALL LETTER ALPHA WITH TONOS
0xDD 0x03AD #GREEK SMALL LETTER EPSILON WITH TONOS
0xDE 0x03AE #GREEK SMALL LETTER ETA WITH TONOS
0xDF 0x03AF #GREEK SMALL LETTER IOTA WITH TONOS
0xE0 0x03B0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
0xE1 0x03B1 #GREEK SMALL LETTER ALPHA
0xE2 0x03B2 #GREEK SMALL LETTER BETA
0xE3 0x03B3 #GREEK SMALL LETTER GAMMA
0xE4 0x03B4 #GREEK SMALL LETTER DELTA
0xE5 0x03B5 #GREEK SMALL LETTER EPSILON
0xE6 0x03B6 #GREEK SMALL LETTER ZETA
0xE7 0x03B7 #GREEK SMALL LETTER ETA
0xE8 0x03B8 #GREEK SMALL LETTER THETA
0xE9 0x03B9 #GREEK SMALL LETTER IOTA
0xEA 0x03BA #GREEK SMALL LETTER KAPPA
0xEB 0x03BB #GREEK SMALL LETTER LAMDA
0xEC 0x03BC #GREEK SMALL LETTER MU
0xED 0x03BD #GREEK SMALL LETTER NU
0xEE 0x03BE #GREEK SMALL LETTER XI
0xEF 0x03BF #GREEK SMALL LETTER OMICRON
0xF0 0x03C0 #GREEK SMALL LETTER PI
0xF1 0x03C1 #GREEK SMALL LETTER RHO
0xF2 0x03C2 #GREEK SMALL LETTER FINAL SIGMA
0xF3 0x03C3 #GREEK SMALL LETTER SIGMA
0xF4 0x03C4 #GREEK SMALL LETTER TAU
0xF5 0x03C5 #GREEK SMALL LETTER UPSILON
0xF6 0x03C6 #GREEK SMALL LETTER PHI
0xF7 0x03C7 #GREEK SMALL LETTER CHI
0xF8 0x03C8 #GREEK SMALL LETTER PSI
0xF9 0x03C9 #GREEK SMALL LETTER OMEGA
0xFA 0x03CA #GREEK SMALL LETTER IOTA WITH DIALYTIKA
0xFB 0x03CB #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
0xFC 0x03CC #GREEK SMALL LETTER OMICRON WITH TONOS
0xFD 0x03CD #GREEK SMALL LETTER UPSILON WITH TONOS
0xFE 0x03CE #GREEK SMALL LETTER OMEGA WITH TONOS
0xFF #UNDEFINED

Hallo Sebastian,

meine Antwort war sicherlic grob, und auch dazu gedacht, die ausführlichen Hintergrundinfos bei Wikipedia nachzuschlagen.

Danke Achim, dass mit dem ASCII code, habe ich auch schon
probiert. Im ASCII Code sind jedoch keine griechische
Buchstaben vorhanden (www.torsten-horn.de/techdocs/ascii.htm).
Verstehe nicht ganz,was du mit „Erweiterung“ meinst…

ASCII ist von 0 … 127 genormt. Meist werden aber 8bit, und damit 0…255 verwendet. Diese zusätzlichen Zeichen sind die Erweiterung des ASCII-Satzes. Diese Erweiterung ist je nach Aufgabe unterschiedliche (Unlaute, Akzente, Grafik-Block-Elemente, griechisch, kyrillisch …) und sind in verschiedenen Codepages anders zusammengestellt.

Der Vorschlag mit dem Editor ist mir auch nicht ganz klar. Ich
arbeite mit BCB6 und bin doch an den dortigen Editor gebunden.
(sorry, hätte ich von Anfang an schreiben sollen)

Einem C-Compiler ist es in der Regel egal, ob ich mit Notepad, Edit oder Edlin mein Programm erstelle.

Die Eigenschaft ->Caption eines TLabels erwartet einen
AnsiString. D.h. griechische Buchstaben sind nicht möglich,
und der Editor kommt damit auch nicht klar.

meist nur eine Frage der verwendeten Codepage. Du müstest einen Font mit griechischer ASCII-Erweiterung verwenden, dann kann es vermutlich auch Dein Editor.

Die einzige Möglichkeit, die ich jetzt sehe und wo ich nicht
verstehe, dass das nicht funktioniert, ist wenn man einfach
z.B. den Zeichensatz (charset)von Label1 auf griechisch setzt
und dann einfach Label1->Caption=„a“; schreibt. Jedoch wird
mir da auch nur ein „a“ angezeigt, anstatt einem Alpha.

Da Griechisch, Kyrillisch, … nicht nur eindeutig zuordbare Zeichen enthalten, gibt es diese Umstellung nicht. Was immer geht: Zeichentabelle (Programm unter Start->AlleProgramme->Zubehör->Systemprogramme) zu nehmen, Deinen Spezialfont und dann ein Zeichen aussuchen. Ist allerdings mühselig, gibt es einfachere Verfahren.

Gruß
achim