Charsets

12 отговора 275 прегледа
#1

Charsets

Imam edno prilozenie, koeto na nqkoi PC-ta kato se pusne, izkarva vyprositelni v imenata tam kydeto sa pisani na kirilica. Tova se opravq ot Regional settings. Poglednah koda i vidqh che na Font.Charset e izbran default_charset. Izbrah navsqkyde russian_charset i prekompilirah programata, no tova ne pomogna. Ako ne ti e nastroen regional settings-a ne mozesh da vidish kirilicata. Moze li da se reshi tozi problem? Trqbva da izpolzvam drug standarten font li, a ne tozi po default v delphi-to?

Отговор
в отговор на |ma3x|Virus #2

Re: Charsets

1. Върху какъв Win си - и имаш ли кирилизация - допълнителна?
2. С коя версия на Delphi си ?
Тогава може да се прецени какъв може да е проблема.

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #3

Re: Charsets

Ами не говоря за конкретен Windows а като цяло. Може би не се изразих преди точно, но въпросът ми е как да се видят тези символи нормално, без да има инсталиран някакъв кирилизатор, или да се правят допълнителни настройки по Windowsa? Ako трябва да конкретизирам нека са Win2000,XP.

Отговор
в отговор на |ma3x|Virus #4

Re: Charsets

>Ами не говоря за конкретен Windows а като цяло
За всеки Windows след 3.х е достатъчно
. 1. При инсталацията да си кажеш, че си българин. Специално за 2000 и ХР обърни внимание на Language for non unicode application или нещо подобно.
. 2. Да не качваш никакви кирилизатори. Ако си допуснал грешката и вече си качил (ти или някой друг) на твоята машина или на машината на клиента - следвай съветите на инжИнера за лечение.
. 3. Ползвай в контролите Default Charset.
И ще имаш спокойствие на душата

Отговор
в отговор на NDeu #5

Re: Charsets

:)
Явно не мога да уточня проблема.
Възможно ли е без кирилизатор и без настройка от language settings, прилозението да показва нормално кирилицата в приложението?
Ако използвам твърдо зададен russian_charset няма ли да стане?

Отговор
в отговор на |ma3x|Virus #6

Re: Charsets

А-а-а. Така проблема става вече доста сложен.
Да обобщим: Искаш на система, която не е локализирана за кирилски език (при дефаулт инсталация Windows поддържа само Английски) да показваш правилно кирилските букви.
В нормалния случай отговора е НЕ.
Това може да се заобиколи, както го заобикалят речниците. Трябва с приложението да влачиш и необходимите ти фонтове, като вземеш мерки и за правилното изобразяване на системните контроли - менюта, титълбар и т.н.

Отговор
в отговор на NDeu #7

Re: Charsets

Да точно това имах в певдвид.
И аз си мислех че ще трябва някои фонтове да разпространявам с приложението.
А кои от стандартните е добре да използвам за целта (ако има такива)?

Отговор
в отговор на |ma3x|Virus #8

Re: Charsets

Няма да стане със стандартните, защото не можеш да иснаталираш два пъти един и същ шрифт (макар и единия кирилизиран, а другия не). Просто като си пишеш приложението на всичките ти контроли (вероятно ще ти е необходимо само на формите - останалите контроли ако ParentFont им е True ще си вземат сами настройките на шрифта от тях) си задаваш този шрифт, който ще влачис с твойто приложение (например Timok - или какъвто кирилски шрифт си си харесал) и нямаш проблеми. Е, ще имаш малък проблем със системните диалози - ShowMessage, MessageDlg, MessageBox - те работят със системните шрифтове, ама в края на краищата не може да очакваш, че всичко ще си тръгне лесно лесно без никаква поддръжка от страна на системата, нали?

Отговор
в отговор на andrew_nikoloff #9

Re: Charsets

Има и още един проблем - както казаха хората сблъсквали се с писане на подобни програми - от тип речници - в които имаш един localе на системата а ти да използваш два съвсем други - единственото решение е ползването на unicode. Това обаче довежда не само до разпространяване на съответните шрифтове - ами и до възможността на самата сиситема да поддържа unicode приложения. Всичко след 95 с малки изключения (при качен IE6 на 98) го прави - но не без проблеми(примера с качения кирилизатор) - за това най-сигурното е ползването на 2000 или XP.
Хубавата новина е, че Octane-a ще има пълна поддръжка на unicode VCL ;-))))

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #10

Re: Charsets

Е КРАЙНО ВРЕМЕ БЕШЕ!!!
Това му беше един от най-гадните недостатъци на Делфито - липсата на Unicode поддръжка... Не че няма всякакви библиотеки за тая работа, ама друго си е да не се занимаваш с пакети, библиотеки и какви ли не глупости

Отговор
в отговор на andrew_nikoloff #11

Re: Charsets

Знаеш ли - като се замислиш - ще установиш, че това е нож с две устриета - реално по-голямата част от приложенията не изсикват подобна натовареност - и това ще доведе до повече проблеми - най-вече с Win95 - ако някой го ползва.
Още повече, че няма смисъл да се обработват unicode низове - още повече в базите данни - това забавя търсенията и прочие ;-))) - на мен и стария начин ми вършеше работа - не се занимавам с писане на речници или приложения с едновременна поддръжка на няколко езика.
И все пак се радвам - защото това ще реши други проблеми - като този с кирилизацията на системата - т.е. нещо което трябва да се направи за да тръгне една не-unicode програма без проблеми - а това води понякога до конфликти - пробвал съм го на non-english система ;-)))))

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #12

Re: Charsets

Е, никой не говори, че трябва да забравим за добрия стар String (че и още по-стария ShortString ). Хубарото на Unicode VCL-а е в TWinControl-а с unicode, а не в TStrings-а с такъв
Лично според мене е време да забравим вече за 95-цата (който може разбира се ). Аз лично си съветвам клиентите да забравят и за 98-цата, ама де тоз' късмет

Отговор
в отговор на |ma3x|Virus #13

Re: Charsets

nr go dochetoh cqloto ama mi prilicha na problema zaradi kojto napisah slednat funkciq:


function SetBulgarian:boolean;
var langs:TLanguages;
LID,x:cardinal;
begin
Result:=True;
if Win32Platform=VER_PLATFORM_WIN32_NT then begin
langs:=Languages;
LID:=0;
for x:=0 to langs.Count-1 do if langs.Name[x]='Bulgarian' then begin
LID:=langs.LocaleID[x];
break;
end;
if LID=0 then begin
Result:=False;
exit;
end;
SetThreadLocale(LID);
end;
end;



------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор