CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Polskie czcionki

Polskie czcionki

dział ogólny

Re: Polskie czcionki

Nowy postprzez polymorphism » wtorek, 30 października 2012, 12:51

sebaskow, do cholery, czy jesteś w stanie odpowiedzieć mi w końcu na pytanie, które 2x zadałem wcześniej, czyli:
Jak wyświetla Ci się tekst wprowadzony w ten sposób -> http://programowanie.cal.pl/forum/viewtopic.php?p=13275#p13275 :?:
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez Cyfrowy Baron » wtorek, 30 października 2012, 13:40

Twój kod polymorphism miałby znaczenie gdyby zmienna str była typu wchar_t, oczywiście takie dodawanie by nie zadziałało, ale chodzi o to, że począwszy od środowiska 2009, każdy łańcuch znaków jest traktowany jako UnicodeString, a nie AnsiString. Kompilator potraktowałby to jako AnsiString tylko gdyby zdefiniować ten typ, czyli:

KOD cpp:     UKRYJ  
AnsiString str;

str += "Zamknięcie raportu spowoduje stratę wszystkich nie wprowadzonych danych...\n\n";
str += "Czy chcesz zamknąć raport?\n\n";
str += "Wsiśnij TAK \tjeżeli chcesz zamknąć raport\n";
str += "Wciśnij NIE \tjeżeli jednak chcesz pozostać w trybie edycji\n";
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez polymorphism » wtorek, 30 października 2012, 14:12

Twój kod polymorphism miałby znaczenie gdyby zmienna str była typu wchar_t (...)

Nie do końca. Jeśli byłby to UnicodeString, nie dochodziłoby do konwersji ANSI -> unikod (zwróć uwagę, że dodaje tam literały unikodowe). Z kolei dla AnsiStringa konwersja unikod (literał) -> ANSI (kontrolki) byłaby dokonywana z uwzględnieniem aktualnego kodowania systemowego (w każdym razie tak zakładam). Czyli problem niezgodności stron kodowych ANSI powinien zniknąć.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez Cyfrowy Baron » wtorek, 30 października 2012, 14:18

Tylko, że ja to już sprawdzałem, te literały są zbędne, gdyż jak wspomniałem, każdy łańcuch jest typu UnicodeString, co jest zresztą opisane gdzieś w plikach pomocy. A skoro String = UnicodeString, to literał niczego tutaj nie zmieni - tak sądzę.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez polymorphism » wtorek, 30 października 2012, 14:47

No właśnie literał ma tu duże znaczenie, tzn strona kodowa tego literału. Jeśli literał poddajesz konwersji na unikod, to musisz uwzględnić jego stronę kodową. Zakładam, że w VCL-u domyślą stroną kodową przy tego typu konwersjach jest aktualna strona kodowa systemu, czyli w tym konkretnym przypadku inna niż ta, w której został skompilowany program. Stąd te problemy.

Zresztą ten sam problem masz w aplikacjach konsolowych. Konsola ciśnie w cp852, program domyślnie kompilowany jest w cp1250 i ta linia:
KOD cpp:     UKRYJ  
cout << "ęążźć\n";

nie wyświetli poprawnie znaków.

Rozwiązać można to na trzy sposoby:
  1. przestawić kodowanie konsoli - nie takie proste.
  2. skompilować aplikację w cp852 - niby ok, ale co jeśli konsola będzie w innym kodowaniu?
  3. pisać w unikodzie ;)
    KOD cpp:     UKRYJ  
    wcout.imbue(locale(".OCP")); // <--- określam wyjściowe kodowanie - OEM, czyli kodowanie konsoli (windows only).

    wcout << L"ęążźć\n"; // <--- gdzieś na wyjściu strumienia nastąpi konwersja unikod --> OEM
     
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez sebaskow » środa, 31 października 2012, 09:38

polymorphism napisał(a):sebaskow, do cholery, czy jesteś w stanie odpowiedzieć mi w końcu na pytanie, które 2x zadałem wcześniej, czyli:
Jak wyświetla Ci się tekst wprowadzony w ten sposób -> http://programowanie.cal.pl/forum/viewtopic.php?p=13275#p13275 :?:


Na tym komputerze gdzie był problem nie wyświetlało prawidłowo czcionek. Wciąż były krzaczki.
Avatar użytkownika
sebaskow
Intelektryk
Intelektryk
 
Posty: 135
Dołączył(a): wtorek, 3 maja 2011, 08:30
Lokalizacja: Katowice
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++ Builder XE7
Gadu Gadu: 0
    Windows XPChrome

Re: Polskie czcionki

Nowy postprzez polymorphism » środa, 31 października 2012, 11:54

Hmm, dziwne. Może domyślna strona kodowa w VCL-u jest jednak na sztywno ustawiona, tzn. zgodnie z tą, w której kompilowany był program. No ale wtedy oznaczałoby to, że aplikacja korzysta z WinAPI w wersji ANSI.

Testowałeś to po przestawieniu mapowania _TCHAR na wchar_t?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Polskie czcionki

Nowy postprzez sebaskow » piątek, 2 listopada 2012, 22:33

Tak oczywiście. Nie mam już teraz okazji pokombinować, bo tak jak napisałem administrator porawił stronę kodową.
Ciekawe jest też to że nie mógł zainstalować drukarki sieciowej. Jak poprawił stronę kodową to i udało mu się zainstalować drukarkę.

Pozdrawiam
Avatar użytkownika
sebaskow
Intelektryk
Intelektryk
 
Posty: 135
Dołączył(a): wtorek, 3 maja 2011, 08:30
Lokalizacja: Katowice
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++ Builder XE7
Gadu Gadu: 0
    Windows 7Firefox

Re: Polskie czcionki

Nowy postprzez sebaskow » piątek, 2 listopada 2012, 22:34

Szczegółów dotyczących tej drukarki nie znam, są to informacje które przekazali mi koledzy gdyż wówczas nie było mnie w pracy. :)
Avatar użytkownika
sebaskow
Intelektryk
Intelektryk
 
Posty: 135
Dołączył(a): wtorek, 3 maja 2011, 08:30
Lokalizacja: Katowice
Podziękował : 10
Otrzymał podziękowań: 0
System operacyjny: Windows 10
Kompilator: C++ Builder XE7
Gadu Gadu: 0
    Windows 7Firefox

Poprzednia strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 48 gości

cron