-
Собственно сабж. Приложения только для Win2K и выше чтобы только юникод без анси вообще, безо всяких преобразований.
-
-
Я указываю
А инифайлы грузят все равно анси
Caption тоже анси. Это с чем только столкнулся.
-
это мне каждому компоненту надо еще дополнительно задавать SetUnicode(True);
-
Символ UNICODE_CTRLS предназначен для превращения визуальных объектов TControl в окна, работающие непосредственно в кодировке Unicode. Данная работа выполнена практически полностью (хотя периодически обнаруживаются некоторые неполадки, но они устраняются). Достаточно включить в проект эту опцию, и приложение практически полностью будет поддерживать кодировки UNICODE. Все вызовы к API-функциям перенаправляются на UNICODE-версии этих функций (с окончанием W). Контролы типа TREEVIEW и LISTVIEW начинают работать с UNICODE-версиями оконных сообщений. И так далее.
из Книги о KOL
http://kolmck.net/docs/KOLBook.rarhttp://s1.ipicture.ru/uploads/20120216/RxovV3TK.png
-
контрол.SetUnicode(TRUE);
Если использовать мск то автоматически будет назначено.
-
Да я Unicode_ctrls дефайном задаю.
А как же текст сам, он же в анси, дельфа уникод не понимает до 2009.
В студии пишу в проекте Use Unicode, и к каждому тексту добавляю L"Текст".
И там препроцессор переводит из анси в уникод. А в паскале ведь отсутствует препроцессор. Книгу по кол постоянно читаю. Что-то мне библиотека все больше и больше нравится.
-
Попробывал в mck, d7 winXP sp2. Грузит из ini без проблем. Без разницы как он был сохранен - cp1251 или utf16-le. Шрифт контролов - arial unicode, иероглифы есть.
-
> В студии пишу в проекте Use Unicode, и к каждому тексту
> добавляю L"Текст".
var s:Widestring;
-
да, и не понял, как понять 'дельфа уникод не понимает до
2 009.' вроде же с 3 чтоли версии юникод прекрасно понимает. А вообще Владимир давно всё продумал. Есть KOLString, который в зависимости от флагов будет ansi или wide. И компилятор далеко не тупой.
-
Я имею ввиду редактор в делфи он дает редактировать только анси.
Мекрософт выходили из положения препроцессором.
-
Делфи начиная с 2009 все уникод Text, Caption et... и редактор кода редактирует извините за тавтологию и в анси и в уникоде, и еще в нескольких кодировках. А не только вызов функций в W на конце.
-
да, сам редактор не понимает юникод, но трудно представить себе ситуацию в которой могут понадобится спецсимволы.
Со включеным флагом UNICODE_CTRLS при использовании mck все контролы используют WideString
Так как
var S: WideStrig = 'текст'; // есть юникод
Компилятор правильно приведет. Проверьте в отладчике.
-
> CBR919RR © (20.02.12 21:09) [10]
ты че по китайски пишеш в дельфе?
-
А вообще Владимир давно всё продумал. Есть KOLString,
Это не я придумал. Я просто применил. Конкретно не помню кто именно придумал.
-
Ничего не выходит
UNICODE_CTRLS на месте
И файл деклараций есть.
Бросаю на форму RichEdit
Пишу элементарный код в кнопке
procedure TForm1.Button1Click(Sender: PObj);
var
S:WideString;
//S:KOLString;
begin
S:= #$74C1;
RichEdit1.Font.FontName:='Arial Unicode MS';
RichEdit1.Font.FontHeight:=30;
RichEdit1.Add(S);
end;
Вместо иероглифа знак вопроса. Причем пробовал и на 7 делфи и на 2009
Подставлял все возможные юникодовские шрифты
Ноль эмоций. Выводит знак вопроса.
Ну что я делаю не так?
-
> Ну что я делаю не так?
Вот это:
> RichEdit1.Add(S);
RichEdit1.RE_Text[reTextUnicode, False] := S;
-
Бесполезно. Вообще очищается и всё. И ни одного символа, даже тех, которые были.
А как на канвас выводить? А в метку? В другие компоненты?
в RichEdit по идее юникодовский текст при загрузке должен сразу же отобразится, но этого не происходит.
Вы бы написали полноценный примерчик. Я же не первый кто спрашивает как это сделать.
-
И тишина... Значит невозможно включить юникод.
-
все операции с текстом производятся посредством RE_ функций,а ты тупо назначил текст контролу,которомы это по барабану
-
QAZ
напишите пример.
Как на битмап выводить юникод.
с RE_ тоже ничего. То есть вообще ничего.
-
ладно напишу но чур на апи :)
type settextex =record
flags:DWORD;
codepage:UINT;
end;
var
a:array[0..4]of Word;
s:WideString ;
SetText: settextex;
const
EM_SETTEXTEX = WM_USER + 97;
ST_DEFAULT = 0;
ST_KEEPUNDO = 1;
ST_SELECTION = 2;
begin
a[0]:=$74C9;
a[1]:=$72C1;
a[2]:=$71C5;
a[3]:=$73C5;
a[4]:=$0000;
SetText.flags :=ST_KEEPUNDO or ST_SELECTION;
SetText.codepage := 1200;
SendMessage(RichEdit1.Handle, EM_SETTEXTEX, integer(@SetText),integer(PWideChar(@a)));
массив потому что в редакторе невозможно написать строку по китайски
а в рунтайме просто юзай видестринг
-
-
Всё заработало. Причина была в том. что не срабатывал переключатель.
Постоянно забываю, чтобы что-то переключилось, нужно проект пересобрать.
Добавить переключатель и персобрать.