Delphi 7 i Chińskie znaki

Delphi 7 i Chińskie znaki
DO
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:3
0

Witam

w Delphi 4 miałem aplikację w języku Chińskim. Wszystko działało bez problemów do zeszłego tygodnia. Mój chiński przyjaciel przysłał mi nowy znak który nie jest już wyświetlany w programie. Czy ktoś może mi powiedzieć czy w Delphi 7 ten znak będzie wyświetlany poprawnie? czcionka w kontrolkach jest ustawiona na Chiński tradycyjny.

Chinski znak

pozdrawiam
IB

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8796
0

Z tego co pamiętam (aczkolwiek D7 już dawno nie miałem w ustach) to kiepsko (albo wcale) wygląda wsparcie dla Unicode w tym środowisku.

https://stackoverflow.com/questions/2281223/working-with-unicode-strings-in-delphi-7


Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 12 godzin
3

Jeżeli inne znaki działają a 翺 nie to po prostu znaczy że nie ma go w użytym foncie i z jakiegoś powodu Windows nie potrafi podstawić znaku z innego fonta (może nie ma w żadnym?).

Jaki to Windows i jaki font jest użyty do wyświetlenia tekstu?
Jeśli Windows jest stary to sprawdziłbym pod Windows 10.

Delphi 7 raczej się nie różni w tej kwestii niczym od Delphi 4. Pełna obsługa Unicode weszła dopiero w delphi 2009.

edytowany 1x, ostatnio: Azarien
DO
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:3
0

Tak, tylko to nie jest wersja programu wielojęzyczna. Program jest tylko w wersji Chińskiej, nie posiadał kontrolek obsługujących Unicode tylko standardowe i pracował tylko na Chińskim windowsie i tak było do tej pory. Teraz pojawił się problem z tym nowym znakiem, reszta działa bez problemu. Co ciekawe tez znak wyświetla się poprawnie wyłącznie w kontrolce RichEdit ale już w TEdit i TMemo nie.

Tu jest opis tego znaku http://unicode.org/cldr/utility/character.jsp?a=7FFA mi niewiele mówiący. Font w całym programie był ustawiony na Arial i wszystkie chińskie znaki wyświetlały się poprawnie.

pozdrawiam
IB

edytowany 2x, ostatnio: flowCRANE
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 12 godzin
2

Arial nie ma chińskich znaków. To znaczy że do tej pory Windows podstawiał znaki z innego fonta (pewnie PMingLiU), który może tak nietypowego znaku po prostu nie mieć.

https://www.pinyinjoe.com/windows-7/win7-chinese-fonts.htm

Spróbuj np. Microsoft JengHei, jeżeli taki jest.

Podaj wersję Windowsa.

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Dawno nie używałem ale pamiętam że lata temu miałem podobny problem i pomogło https://github.com/rofl0r/TntUnicode pakiet zawiera podstawowe kontrolki i moduły dostosowane do Unicode.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
DO
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:3
0

Dzięki za pomoc. Użyłem Ariala z tego powodu że.....u mnie chińskie czcionki jakie mi podesłali z Chin, na kompie z win XP wyglądały dobrze i dobrze się pozycjonowały w kontrolkach np TLabel. Jednak kiedy program zostawał odpalany w Chinach czy na Taiwanie fonty zmieniały swoje pozycje podnosząc się do góry co nieładnie wyglądało. Tylko Arial zachowywał swoją pozycję i stąd jego użycie. Ja domyślam się że windows musiał podstawiać znaki z innego fontu ale ciekawe dlaczego tego znaku nie podstawia skoro w kontrolce richedit widać ten znak przy dokładnie takim samym ustawieniu nazwy czcionki ( Arial ) i charsetu. Spróbuję użyć tych kontrolek jednak teraz muszę cały program przebudować skoro nie mogę tego znaku poprawnie wyświetlać w dotychczasowej konfiguracji i to troche potrwa.

Co do windowsa 10 to przy takich ustawieniach systemu ( region, jezyk itp ) i czcionki Arial i charsetu GB2312 jak w winXP, wcale nie wyświetla chińskich znaków. Dopiero ustawienie charsetu na Default oraz zmiana czcionki na NSimSun skutkuje poprawnym wyświetlaniem chińskich znaków we wszystkich kontrolkach za wyjątkiem tego jednego znaku. I co ciekawe o ile w windowsie XP ten znak był poprawnie wyświetlany w RichEdit to w windowsie 10 nie jest przy żadnym ustawieniu wyświetlany. Być może to jednak musi to być kontrolka obsługująca Unicode aby ten znak został wyświetlony poprawnie. Tylko ciekawe dlaczego tylko ten znak nie jest obsługiwany a reszta jest.

pozdrawiam
IB

edytowany 2x, ostatnio: flowCRANE

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.