Index górny - borland builder 6 c++

Jak napisać “2” w indeksie górnym w c++ w borland builder c++ ?

A po wpisaniu \u00B2 dwójka wyświetla się normalnie, nie w indeksie górnym.

Chcę to wyświetlić w kontrolce label.

 

Co może być tego przyczyną?

Może to mieć związek ze stronami kodowymi kodu źródłowego i pliku wynikowego (tj nie jest unicode). To tak hasłowo.

 

Też tak myślałem ale jak zmienić to kodowanie na inne? Przy zapisie nie ma takiej możliwości zeby wybrać inne kodowanie.

VCL używa AnsiString więc jeden znak 8bitów(char) nie 16(WideString, wchar etc.) jeśli chcesz wyświetlić dziwaczne znaki wybierz znak z wybranej strony kodowej (po numerku) i ustaw tą stronę we właściwościach kontrolki. Jeśli znak pochodzi z nietypowej strony kodowej - polskiej, czeskiej, niemieckiej etc.

Nadal będzie to pochodna ANSI nie Unikod ale wyświetlisz dziwaczne znaki np. óźćś :smiley:

Indeks górny nie wymaga kombinacji - jest w ANSI

http://www.theasciicode.com.ar/extended-ascii-code/superscript-two-exponent-2-square-second-power-ascii-code-253.html

"2 * 2 => 2^\253 = 4"

Chcesz unikodu w kontrolkach to użyj biblioteki obiektów obsługujących Unicode http://www.lmdinnovative.com/products/lmdelpack4/unicode.php

Z VCL nawet operacja WinAPI SendMessageW, SetWindowTextW itd.(obejście) również ustawi lub zwróci jednobajtowo-znakowy bufor, ponieważ VCL korzysta z “natywnych” obiektów utworzonych wywołaniami np. CreateWindowA zamiast CreateWindowW i Windows przydziela bajtowe bufory dla tekstów?

(przed chwileczką przeczytałem iż tak się dzieje mimo iż powinno inaczej)

 

Gdy tak wpiszę wyświetla się nie 2 w indeksie górnym lecz «

Faktycznie znak jest wśród ASCII Extended (ponad 128 znaków) i co font to inne znaczki.

Wstaw sobie labela ustaw WordWarp=true; i dodaj takie cuś->

for (unsigned char x = 128; x < 255; x++) Label1->Caption = Label1->Caption + (int)x + "=" + (char)x + "\n";

Spróbuj sprawdzić na różnych fontach, z różnym CHARSET(TFont w Object Inspektorze)

Jak znajde ^2 to dam znak  :slight_smile:

 

W Tahoma na ANSI_CHARSET, Western(zamiast Central European) jest!

Numerek 178