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

Polskie czcionki

dział ogólny

Re: Polskie czcionki

Nowy postprzez sebaskow » piątek, 26 października 2012, 23:52

No i nic nie działa, próbowałem już tak jak w programie próbnym :cry:, przeanalizowałem również ten program o którym wspominałem że działa poprawnie i okazało się że jednak nie działa poprawnie również ma problem z wyświetlaniem polskich znaków. :cry:

Nic mi już nie przychodzi do głowy.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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 Cyfrowy Baron » sobota, 27 października 2012, 08:46

Trzeba ustalić pewne fakty. W jakich systemach program działa prawidłowo, przy czym mamy do wyboru 5 różnych wersji systemu WinXP 32 bit, Vista 32bit i 64bit, Win7 32bit i 64bit? Podaj wersje systemów w których występuje ten problem i w których działa dobrze.

Problem niewątpliwie wiąże się z kodowaniem. Stwórz kilka wersji tej bazy danych z różnym kodowaniem i wypróbuj.
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 sebaskow » niedziela, 28 października 2012, 05:59

Sprawdziłem oba kompuery, i ten na którym program działa prawidłowo i ten felerny.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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 » niedziela, 28 października 2012, 06:09

Jeszcze jedna ciekawa rzecz. W komponentach Memo i RichEdit mogę ( użytkownik może ) normalnie z klawiatury wprowadzać polskie znaki. :?:

Wydaje mi się jednak że problem leży gdzieś w moim programie.
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 Cyfrowy Baron » niedziela, 28 października 2012, 09:01

Oba systemy są identyczne, pewnie dlatego, że to jeden system z licencją na kilka stanowisk. To niemal na 99% wskazuje na różnice w konfiguracji tych systemów. Być może coś w ustawieniach językowych. Nie wiem, nie mam jak tego sprawdzić, więc sam musisz bliżej przyjrzeć się różnicom w konfiguracji systemów, lub porozmawiaj z administratorem.
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 » niedziela, 28 października 2012, 11:56

Przy założeniu, że String to UnicodeString, spróbuj wyświetlić taki łańcuch:
KOD cpp:     UKRYJ  
String str;

str += L"Zamknięcie raportu spowoduje stratę wszystkich nie wprowadzonych danych...\n\n";
str += L"Czy chcesz zamknąć raport?\n\n";
str += L"Wsiśnij TAK \tjeżeli chcesz zamknąć raport\n";
str += L"Wciśnij NIE \tjeżeli jednak chcesz pozostać w trybie edycji\n";

Chodzi tu o to, żeby konwersja ansi -> unikod odbywała się podczas kompilacji aplikacji, bo być może problemem jest to, że na systemach są różne kodowania ANSI. I jeśli na przykład program został skompilowany w kodowaniu windows-1250, a Windows pracuje na jakimś innym kodowaniu, które VCL przyjmuje jako te, w które program pracuje, to problem gotowy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
sebaskow
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 » niedziela, 28 października 2012, 12:28

Stronę kodową systemu można sprawdzić wpisując w wierszu poleceń (konsola CMD) polecenie: chcp
U mnie aktywna strona kodowa to 852 czyli Słowiański (Latin II).

Wpisując polecenie: chcp 852 można zmienić numer strony kodowej.

Programy uruchamiane po przypisaniu nowej strony kodowej używają nowej strony kodowej, jednak programy (z wyjątkiem Cmd.exe) uruchomione przed przypisaniem nowej strony kodowej używają oryginalnej strony kodowej.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
sebaskow
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 » niedziela, 28 października 2012, 13:18

Błąd. chcp podaje stronę kodową konsoli a nie systemu (tzw. kodowanie OEM).

To Ci zwróci domyślne kodowanie ANSI:
KOD cpp:     UKRYJ  
char* p = setlocale(LC_ALL, ".ACP");
if(p) cout << p << '\n';

Polskojęzyczne windowsy z reguły mają ustawioną stronę kodową na windows-1250.
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 » poniedziałek, 29 października 2012, 04:38

Faktycznie problemem jest ustawienie na tym nieszczęsnym komputerze strony kodowej.

Jest tam:
1252 a powinno być 1250 ( jak opisał to polymorphism )
437 a powinno być 852.

Poprosiłem Administratora w mojej firmie o zmianę CodePage w systemie.

Pomimo to dobrze by było wiedzieć jak w przyszłości ominąć taki problem nie zmieniając strony kodowej. Czy istnieje możliwość ustawienia mojego programu w taki sposób aby radził sobie z takimi przypadkami :?:
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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 polymorphism » poniedziałek, 29 października 2012, 11:12

Z tym "powinno" byłbym ostrożny. Pisz aplikację tak, żeby nie było tego typu problemów, ergo pisz aplikację w unikodzie (w XXI wieku to standard).
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 » poniedziałek, 29 października 2012, 16:34

Ok. Rozumiem.
Tylko jak mam ustawić środowisko aby tak było ?
Skoro w moim przykładzie Administrator ustawił Stronę kodową na 1252 Są to języki baskijski, niderlandzki, kataloński itp...
Np. znak "ą" ma kod 261 natomiast w kodowaniu 1252 pod numerem 261 jest zupełnie inny znak.

Przeglądarki internetowe potrafią sobie ustawić stronę kodową. Różnego rodzaju edytory tekstu też więc jak to zrobić aby i u mnie działało :?:
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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 » poniedziałek, 29 października 2012, 18:59

Tylko jak mam ustawić środowisko aby tak było ?

A czy Twoja wersja środowiska, a dokładniej biblioteka VCL, nie jest w pełni unikodowa? Czy String to UnicodeString, czy może AnsiString? Jeszcze mapowanie _TCHAR przestaw na wchar_t. Baron milion razy pokazywał, gdzie to przestawić - poszukaj.

Jak wyświetla Ci się tekst wprowadzony w ten sposób -> viewtopic.php?p=13275#p13275 :?:

Przeglądarki internetowe potrafią sobie ustawić stronę kodową.

Przeglądarki nie mają z tym problemu, ponieważ działają w unikodzie - wszelkie literały tekstowe są w unikodzie. Z kolei strony internetowe mają jasno określone kodowanie, więc przeglądarka wie, jakie kodowanie musi przekonwertować na unikod. Strona kodowa systemu nie ma tu większego znaczenia.
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 » poniedziałek, 29 października 2012, 20:36

Z wcześniejszych postów sebaskow wynika, że albo tworzył program w starszej wersji środowiska niż 2009, czyli przed UnicodeString, albo też rozmyślnie definiował w programie typ AnsiString zamiast String, gdyż użycie typu String w środowiskach począwszy od wersji 2009 jest równoznaczne z użyciem typu UnicodeString.
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
    WindowsChrome

Re: Polskie czcionki

Nowy postprzez sebaskow » wtorek, 30 października 2012, 10:22

W moim próbnym programie było ustawione mapowanie na wchar_t i używałem UnicodeString a i tak nie działało to na tym nieszczęsnym komputerze.

Mam w związku z moim problemem jeszcze jednio pytanie na temat opcji w ustawieniach projektu, chodzi mianowicie o ustawienie Code page, jak należy ustawić tą opcję, bo może jest to klucz do rozwiązania problemu polskich czcionek pomimo niewłaściwego ustawienia CodePage w systemie użytkownika ?
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
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 Cyfrowy Baron » wtorek, 30 października 2012, 11:47

Jeżeli nie zdefiniujesz tego parametru kompilator użyje Windows'owej funkcji API GetACP w celu sprawdzenia jakiej wersji używa system na którym program jest kompilowany i użyje ten wartości. Wprowadź tam wartość np. 1250 i sprawdź co z tego wyjdzie.

Z tego jednak by wynikało, że powinieneś w programie ustawić stronę kodową taką z której korzysta ten "nieszczęsny komputer".

Na twoim screenie widać przycisk [ Help ]. Gdy nie wiesz do czego jest któraś z tych funkcji, kliknij na ten przycisk, a przywołasz pomoc dla tej karty.
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

Poprzednia stronaNastępna 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 9 gości