Назад в дневник Пишет Smogg
Мда, ковырять память нужно на с, тем более что с - родной язык винды. Дельфи же слишком простоват.(не, не, я знаю, что такое дельфя и какие вещи там можно делать, если глубоко закопаться)
Так, с раскладками разобрался. И почему Punto мгновенно отражает Alt+Shift (Ctrl+Shift, кому как удобнее), а изменение системного значка активной раскладки происходит с 0,5секундной задержкой.
Фишка в том, что ввод символов в клипборд зависит от текущей раскладки. Если копипастить системными Ctrl-C, Ctrl-V, то текст копируется не только в клипборд в текущей раскладке, но и сохраняется где-то внутри системы в кодировке юникода. И когда вставляется куда-либо, то он вставляется именно как юникод. А кодовая страница юникода содержит около миллиона значков и закорючек. Китайцам с их иероглифами на радость. Поэтому-то при копипасте можно копировать символы в различных кодировках одновременно. Ибо юникод.
Но приложению (в целях совместимости и как знак уважения к наследству 16бит) дается доступ только к общему клипборду, где текст хранится уже в ANSI-кодировке. ANSI-кодировка же зависит от языка. И то, что соответствует 255-му коду в русской, будет означать "я" только и исключительно в русской кодировке. А "Я", соответственно, 255-32=223. А вот ё не только на отшибе клавы, но и в кодовой странице она черте где. Если со всеми буквами алфавита для перевода из строчной в заглавную надо вычесть 32 из кода, то "ё" - это 184, а "Ё" - это 168, т.е. она не только вне общего ряда [А..я] = [192..255], но и перевод надо прописывать особо, через вычитание 16.
Поэтому то, чтобы программно обращатся с буфером обмена, надо знать какая кодовая страница ANSI-кодировки использована при копировании. А это делается через смену активной раскладки клавы. То есть, какой язык для ввода сейчас активен, в такой кодировке и копируется текст в буфер. И именно вот эти дерганья туда сюда раскладок и скрывает затормаживание на полсекунды смены системной иконки текущего языка ввода, Такая фигня.
любая сложная система - это темный лес. каждый в этом лесу протаптывает свои тропинки, по ним и бегает.
лишь изредка, сходя с них, мы находим много интересного, а порою и страшного
бутявка ам-лям-лямкала -
// пара тестовых строчек
Мда, а я еще офигевал когда-то, что кому-то настолько было нечего делать, чтобы такую в общем незамысловатую вещь, как закодировать русские буквы в массив из 255 (33 буквы всего, что тут сложного? Вот если бы в байте было б 16, а не 256, то да, тут было б над чем сломать мозг) символов, умудрился растянуть на несколько десятков страниц неповторяющегося текста. И при этом в конце извиниться за неполноту информации.
Текущий рейтинг
5Оценил
1 человек