![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
RinOSpro |
|
|||
Unregistered |
Когда в мемо копируют из блокнота вместо букв одни ????????????? вопросы? Что это такое? И как это исправить?
|
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Это ошибка. =) Это с любыми языками происходит? п.с. здесь не раз обсуждалась похожая проблема: лечилась она путём смены языка для ввода перед копированием. Т.е. если надо скопировать русский текст, то достаточно перед копированием изменить язык для ввода(Ctrl+Shift) на русский - как проблема изчезает. Это оно? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Или использовать юникодные контролы, который пока что нет в делфях
![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
RinOSpro |
|
|||
Unregistered |
Нет у меня нормально. Я дал другу прогу. Он говорит типа копирует из блокнота в мемо ctrl-c ctrl-v и вот такие закарючки. У меня все норм. Я както давно слышал что вроде в реестр чтото надо добавить. Только что и куда хз.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
RinOSpro, не не поможет тут реестр. Винда должна знать при помощи какой кодовой таблицы юникод в анси перекодировать. Где-то тут я показывал решение проблемы с ручным извлечением из буфера текста.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
RinOSpro |
|
|||
Unregistered |
Дай пожалуста ссылочку не найду никак. Добавлено через 10 минут и 15 секунд Да это оно. Только как это программно лечить? Это случайно не то: function GetKeyboardState(var KeyState: TKeyboardState): BOOL; stdcall; function SetKeyboardState(var KeyState: TKeyboardState): BOOL; stdcall; |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Проблема решается просто нужно в реестре в ключе HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage заменить с параметр 1251 по 1255 значение поставить c_1251.nls. Перезапустить комп и рабоватся
![]() |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
RinOSpro |
|
|||
Unregistered |
А никаких последствий не будет. Типа другие приложения начнут показывать ???? ?????? ???? ????? |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
RinOSpro, попробуй SetThreadLocale, все должно быть пучком
![]() ![]() -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Rennigth, проблем не будет... более того я тебе скажу что это не тока с memo косяк такои получается но и фотошоп руские буквы не видет пока в реестре не подправиш...
|
|||
|
||||
Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Ты не поверишь, но помимо русских кодовых страниц существует масса других. И именно их ты и похеришь своими правками в реестре. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
WaReZMEN, таким "мастерам" нужно руки отрывать.
После такого "исправления" в 98-х виндах не будет и ???. Вообще никаких знаков не будет. В частности в том же фотошопе. Только пустота, вместо русских символов (и не только русских). И во вторых, тебя пользователь просил менять ЕГО настройки системы? Нужно подстраивать программу под систему, а не систему под свою программу. |
|||
|
||||
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 8 Всего: 23 |
Ты не прав. Для 5 и 6го фотошопа под 98 виндой это был реально рабочий метод добавить ему поддержку кириллицы при написании надписей (а, возможно, и названий слоев). Версии CS* (8-10) под XP никаких исправлений не требуют. В остальном я с тобой согласен. -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
В 9х файлы называются не c_1251.nls, а cp_1251.nls (или что-то в этом роде.) Соответственно, указывая c_1251.nls мы указываем то, чего нет. И получаем соответствующий эффект... И как итог - угробим систему. Откуда юзеру знать, что в таком-то месте реестра не хватает буквочки? Ему придётся сносить винду и радостно в матерной форме благодарить автора программы. Не знали об этом? Тогда мой вам совет - лучше не трогайте систему - не создадите проблем. Пользователь вообще может не знать русского. А просто захотел запустить - посмотреть что там. И после этого его немецкая винда будет оккупирована кирилицей. Вот радость то... |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Вот тут есть тот метод http://forum.vingrad.ru/index.php?show_typ...B5%D0%BD%D0%B0#
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
WinXP + SP
D2007 + Upd3 re1 это TcxRichEdit, в котором находится русский текст tlf2 типа string
![]()
Не помогает Добавлено через 7 минут и 53 секунды помогло это:
всё-таки приходится подстраивать систему под программу :( |
||||||
|
|||||||
WaReZMEN |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Наконецто бан сняли....
Вот вот... А все начали кричать я просто дал совет как я с этим борюсь. Я не говорил что это панацея от всех бед... Но в результате правки в реестре ни разу за 5 лет касиков не видел... Если ему мои способ не понравится пусть не пользуется... Я канечно согласен что систему под программу не стоит настраивать.... но иногда нужно... Это сообщение отредактировал(а) WaReZMEN - 12.11.2007, 01:12 |
||||
|
|||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 7 Всего: 38 |
А теперь попробуй, дай программу тому, у кого используется 1252-кодировка. Много нового о себе узнаешь ![]()
А я видел. Когда за границей мою программу запустили. И скажу, что это очень не хорошо! Пишешь для себя и никаких проблем? Ок. Но не надо плохому учить других!!! -------------------- ![]() |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
aktuba, речи не было о том что на другом компе ему запускать.... он спросил про свои комп... И если ты за границу пишеш то нахрен на руском??? с Английскои кодировкокой то все ок.
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
aktuba,
![]() ![]() ![]() Добавлено через 3 минуты и 38 секунд WaReZMEN, программы в основном создаются НЕ для своего компа, но всё равно на др. компах, как правило установлены точно такие же ОСи. Уважаемые, а может вернёмся к теме? Может всё-таки есть варианты для более старших версий Delphi, нежели 5-7 Добавлено через 3 минуты и 51 секунду хотелось бы поиметь для 2007 Это сообщение отредактировал(а) Akella - 12.11.2007, 09:07 |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Akella, Спасибо за поддержку.
![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
афигенные проблемы будут у пользователя, если понадобится работать с кодовыми страницами, которые "добрые" программисты таким образом похерили. я уже столкнулся с такой проблемой.
самый не травмирующий ОС вариант -------------------- There are always someone smarter than you... |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Я тоже, у меня были проблемы с румынским языком. Ручное извлечение совсем не изящное :( , но работает. Изящно только на KOL с использованием юникодных контролов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 7 Всего: 38 |
Может все-таки начнем читать другие посты в топе тоже? Этот всего лишь 4-й... А насчет за границу по-русски... Видишь ли, и за рубежом иногда живут русские ;) Вроде как дали уже хороший способ ;) Еще один способ - использовать юникодные контролы. Хватит? Аналогично. Akella, WaReZMEN, из 11 человек, которые отписали в этом топе - 3 сталкивались с проблемой после правки реестра. 3/11 = 27%, как мне кажеться весомый аргумент против данного способа. -------------------- ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
я согласен, что весомые, а также согласен, что нехорошо менять 1252 на 1251
![]() Но программа (снимок см. выше) работает со сравнительно большими объемами текстов, как минимум 5 метров в каждом файле. А файлов нужно обработать около 4-5 за одно утро. Файл нужно загрузить в мемо, потом пробежаться по всем строкам мемо и нужные выдернуть в нижнюю таблицу. Поэтому оперирование данными через буфер замедлит работы программы ещё больше. |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Народ ну скажите деиствующий способ!!!! не меняя 1252 на 1251.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Akella, то что у тебя это просто глюк какой-то. Может в мемо просто чарсет не руский стоит и все.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
У меня такои косят был не только когда в мемо вставляеш... но и просто в редактор кода на Дельфе...
Это сообщение отредактировал(а) WaReZMEN - 13.11.2007, 04:30 |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 7 Всего: 38 |
-------------------- ![]() |
|||
|
||||
WaReZMEN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Не вы скажите как исправит чтоб showmessege не показывал "???? ??????????"
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Можно до посинения вопить, но такие проблемы по-любому будут для контролов созданных при помощи функции CreateWindowA/CreateWindowExA и в делфи и вижаулке шестой и во многих других мемах. в системах NT анси строки приводятся к юникоду, а при получении от них результата (если это функции оканчивающиеся а "А") происходить обратное преобразование Юникод -> Анси, вот тут то и происходят все проблемы, поскольку в юникоде букав многа а в анси мало, потому как их интерпретировать зависит от чарсета. Чарсет определяет какой же символ будет у символа с данным кодом. 1) При работе с буфером обмена чарсет определяется текущим языком. 2) В мемо и др. компонентах чарсет можно установить (свойство Font). Если чарсет не верный, то вместо русских символов будут символы другой кодировкой. Если в системе нет такого РУССКОГО шрифта, то винде рисовать будет нечего, в лучшем случае она попытается заменить его другим кирилистическим шрифтом, но не всегда. SetThreadLocale устанавливает дефолтную локаль для преобразования юникод -> Анси, это тоже что и установка в реестре. 3) ShowMessage это тоже VCL форма, т.е. Windows окно, потому решение см. 2 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 31 Всего: 484 |
||||
|
||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
RUSSIAN_CHARSET Добавлено через 3 минуты и 24 секунды
а я не работаю с буфером обмена Добавлено через 5 минут и 49 секунд Значит такая идея возникла: 1. вначале работы процедуры запоминаем язык 2. переключаемся на русский программно 3. выполняем процедуру 4. переключаемся обратно Недостаток: если нет русского, могут будут проблемы, может быть даже AV из-за того, что нет русского. У кого-нибудь ещё есть предложения? Добавлено через 6 минут и 29 секунд
так установлено ещё в дизайнере при проектировании приложенияч |
||||||
|
|||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Akella, попробуй шрифт сменить на какой-нибудь стандартный.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
у меня так получилось, используя LoadKeyboardLayout
Добавлено @ 10:37 т.е. по идее если даже нет в системе русского, то LoadKeyboardLayout загрузит и активирует, возможно что только для данного сеанса программы, а это именно то, что нам и нужно так можно узнать список установленных раскладок Это сообщение отредактировал(а) Akella - 14.11.2007, 10:40 |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
кстати сам шрифт, используемый в контроле тоже влияет, я вот вышеописанный пример попробовал с разными, нормально работает с Lucidia Console
Добавлено через 49 секунд Rennigth, ![]() ![]() |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Как-то так:
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
Вот ещё пример вставки текста из буфера обмена. Очень похож на предыдущий.
Это сообщение отредактировал(а) Akella - 18.11.2007, 16:09 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
при объявлении строковых типом можно ещё воспользоваться не String, а Widestring
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |