Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Ниже сам проект. Сегодня всю ночь бился с не понятной для меня системой копирования в буфер обмена. Собственно по этому и создал эту тему. Так как кто не знаком с плагинами HPW, для них будет проблематично создать редактор, по этому и выкладываю уже более менее готовый вариант.
Суть вот в чем. Если раскладка клавиатуры выставлена русская, то и в буфер обмена все копируется так как надо. Если раскладка выставлена английская, то при вставке из буфера обмена получаются крякозябры. Почему? Ума не могу дать.
Хочу что бы вы попробовали на других системах. Что бы быть точно уверенным что дело не в системе. Виртуалку не охота устанавливать, да и не люблю я, виртуальную машину почему то.
Если копировать программно с помощью плагина, все отображается нормально при любой кодировке. Если же через контекстное меню, то получается так, как описал выше.
Если из буфера скопировать в переменную, тоже отображается нормально. Если скопировать из переменной в поле ввода, опять крякозябры.
Не знаю уже в какую сторону копать. На что грешить... Плагин, НБ, русик плагина, русик НБ, система или еще что... ХЗ. Всю ночь сегодня бился.
При запуске проекта, в поле будет русский алфавит. Попробуйте при разной раскладке клавиатуры скопировать текст и вставить в поле ниже. Интересует как у вас будет отображаться. Мож кто уже сталкивался с такой проблемой?
Суть вот в чем. Если раскладка клавиатуры выставлена русская, то и в буфер обмена все копируется так как надо. Если раскладка выставлена английская, то при вставке из буфера обмена получаются крякозябры. Почему? Ума не могу дать.
Я копировал из поля ввода в мемо и обратно, "и туда и сюда, и сверху и снизу".
Может чего не так делал, поскольку почти ничего не понял из этой дэмки, но пока могу сказать только одно - у меня все копируется как надо через буфер без крякозябров при любой раскладке клавиатуры.
Компьютер надежный, а не молодежный. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Значит косяк системы?... Подождем, кто что еще скажет. В принципе я обошел эти крякозябры с помощью твоего плагина. Подключил монитор буфера обмена, и в момент копирования перевожу раскладку на русскую, а после меняю на ту какая стояла.
Но вопос все равно остается открытым, нужно понять на будущее. Обратил внимание что в плагине NeoBookDB когда из буфера вставляешь после создания базы метки и текстовые поля с кнопками навигации, та же ситуация. Надписи на кнопках при английской раскладке меняются на знаки вопроса, при русской текст нормально отображается.
ЦитатаPeter ()
но я почти ничего не понял из этой дэмки.
Там и понимать нечего. Нужно представление иметь о регулярках чтобы понять.
Верхнее поле ввода для регулярного выражения. Среднее для текста в котором ищутся совпадения. Нижнее просто подсказка что делает выбранный метасимвол. Справа список возможных метасимволов разбитый на группы.
При вводе метасимвола автоматически происходит поиск по тексту и подсветка найденных совпадений. Правда не всегда совпадают регулярки из hpwPlusMemo и hpwControl. Для этого сделал внизу две кнопки, которыми можно переходить к точным найденным результатам.
Например если ввести точку, то выделится весь текст. На самом деле это выделился каждый символ. Если нажимать на кнопку >> то будет выделяться каждый символ по очереди, это и есть найденный результат. Я не разобрался как сделать подсветку чтобы чередовалась, да и вряд ли наверно возможно.
Можно вводить как метасимволы, так и обычные символы. Ну все это можно почитать в справке по ссылке что я тебе скидывал.
Делаю просто для удобства составления выражения. Сразу будет видно где ошибку допустил. Подобные программы есть, но они не совпадают по синтексису с hpwControl, а нужно что бы сразу совпадало, а не переделывать после.
Здесь составил нужное выражение, вставил в нужную команду hpwControl, и фсе...
Добавлено (07 Марта 2015, 17:28) ---------------------------------------------
ЦитатаPeter ()
Я копировал из поля ввода в мемо и обратно
Что то я пропустил... Нужно из того поля где буквы находятся. Из других полей все нормально копируется. Переключи на английскую раскладку, скопируй буквы, и вставь или в верхнее поле, или то которое поверх всех, это просто временное поле ввода для проверки. Мож оно тебя с толку сбивает?
Удали его вообще, Text21 или 23, не помню точно, у себя я уже удалил, и попробуй поискать . Там правда нужно активировать редактор, что бы в него можно было текст вставлять. В подпрограмме :TextForRegex найди строчку
hpwPlusMemoSetVar "[hpwMemoReadOnly]" "1"
и измени значение на 0.
Вставь в него нужный текст, и вводи в верхнее поле символы для поиска. Найденный текст будет автоматически подсвечиваться.
Добавлено (07 Марта 2015, 17:43) --------------------------------------------- Вот смотри, скопируй к примеру текст из этого паб файла и вставь в редактор. После вверху введи слово Cancel В редакторе выделится несколько слов Cancel, но по факту hpwControl найдет только одно слово. О чем ниже будет сообщение. Это потму что в hpwPlusMemo по умолчанию ищутся все регистронезависимые слова, а в hpwControl с учетом регистра. Если щелкнуть на кнпку >> то выделится именно тот текст, который нашел hpwControl, а нам нужен именно этот результат, так как в дальнейшем планируется работать именно с ним.
Поправим немного ситуацию. Установи в поле ввода выражений курсор перед словом Cancel. В выпадающем списке выбери Модификаторы. Щелкни дважды по (?i) В поле ввода должно появится (?i)Cancel и внизу уже отобразится что найдено 4 совпадения.
Модификатором (?i) мы указали что нужно искать слово Cancel не зависимо от регистра. Для того что бы отключить этот режим, можно удалить этот модификатор, или поставить минус между ? и i (?-i)
Нужно из того поля где буквы находятся. Из других полей все нормально копируется. Переключи на английскую раскладку, скопируй буквы, и вставь или в верхнее поле, или то которое поверх всех, это просто временное поле ввода для проверки.
Все копируется и вставляется без крякозябров вне зависимости о раскладки.
Цитатаmishem ()
и измени значение на 0.
Вставь в него нужный текст, и вводи в верхнее поле символы для поиска. Найденный текст будет автоматически подсвечиваться.
Хоть и не по сути вопроса, но тут есть косяк - при вводе текста в верхнее поле, если находится совпадение, то фокус ввода перескакивает на мемо плагина.
Цитатаmishem ()
нужно понять на будущее.
Вот так и будешь без конца костылями косяки в суперосях править. mishem, тебе шашечки или ехать?
Можно не отвечать - вопрос риторический и ответ известен.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Вот так и будешь без конца костылями косяки в суперосях править.
Я все это прекрасно понимаю, и именно по этому и перешел на супер ось. ХР меня всем устраивала и по сейчас ностальгия.
Но вот взять хоть этот пример. На хр все работает, кто то скачал и говорит про этот косяк, а я и понятия не имею что и почему. Что делать? Агитировать переходить на хр?
По факту, косяк то мой, я не предусмотрел всех возможных ситуаций. А тестировать на виртуалке, мне влом. И это не один косяк, их много, просто кто то не видит, кто то не понимает, и таких кто то к сожалению большинство. По этому я тебе когда то и сказал, переходить рано или поздно придется по любому. Мы это проходили уже с хр, так что конечный результат известен. Если в сторону висты я даже не смотрел, то здесь уже как бы выбора нет. Одна надежда что в 10 все пофиксят. А там посмотрим.
Хр тоже, что б стать совершенной, 3 сервиспака пережила. Сейчас уже просто и не помним что до них было. К хорошему быстро привыкаешь. Не хочешь читать хелп?
"Рабочий люд" от неё и не уходил, а на вконтактеров можно (и нужно!) забить. Кстати, буквально вчерась, один клиент устроил почти скандал из-за того, что мы (мой шеф) поставили ему на ноут семерку, а не хрюшу. Успокоило только то, что он сказал, что сам может поставить хрюшу. Правда, чуть позже выяснилось, что семерку поставили чисто временно (она просто оказалась под рукой), чтобы проверить звук, т.к. меняли звуковой чип на ноуте, а сохранять ничего не надо было, и потому надежнее было проверить чистую систему, вот и снесли все ко всем чертям, хотя на "старой" хрюше тоже заработало.
Но, чего греха таить - проблема, похоже, есть, и если ориентироваться на вконтактеров (а их большинство), то надо ее как-то решать.
Цитатаmishem ()
А тестировать на виртуалке,
Виртуалка это - всегда суррогат (уже просто по определению), и если нужно реально протестить, то только нормальная полноценная система.
Цитатаmishem ()
Одна надежда что в 10 все пофиксят.
Ага! Размечтался! Пока только "чем дальше в лес, тем толще партизаны"
Цитатаmishem ()
Хр тоже, что б стать совершенной, 3 сервиспака пережила
Она такой была с самого начала, сервис-паки улучшали систему, но принципиально ничего не меняли. С суперосями ситауция совершенно иная - не будет большим преувеличением сказать, что они - уже другая система (неужеди ты это сам не понимаешь?), а про последнюю лучше вообще и не закикаться. Пардон, но меня "прорывает" на эту тему почти постоянно. Постараюсь держать себя в руках.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ну я ж не сидел сложа руки. За целый день 16 просмотров и только ты один попробовал.
И я ж не могу как у нас тут некоторые, одну команду написать, и быстрее выкладывать НОВУЮ ВЕРСИЮ. С таким подходом за сегодняшний день это у меня уже как минимум сотая версия.
Плюс в русике нб и плагина всю кодировку с русской на дефолтную поменял, думал мож в этом проблема. Пока менял, два раза чуть не заснул, но "залипал" точно. Не хочешь читать хелп?
Так... Я неправильно посмотрел, похоже. Просто у меня алфавит не высветился никакой, а сейчас я его по чекбоксу увидел. Вот его копирую - да, есть проблема
Peter, ну опять я с буфером столкнулся и опять с этой проблемой. в английской раскладке все символы в буфере обмена отображаются вопросительными знаками.
В интернете нашел такое решение. Можно как нибудь в плагине это реализовать?
Дело в том, что после того как текст попадает в буфер, с ним уже никакую конвертацию произвести не получится, да и нет такой конвертации. Как я понимаю символы там в юникоде, а нб юникод не поддерживает (пока). Не хочешь читать хелп?
в английской раскладке все символы в буфере обмена отображаются вопросительными знаками.
Проверять мне лениво, но странно.
Цитатаmishem ()
В интернете нашел такое решение.
Насколько я понимаю, там все наоборот:
Цитата
Таким образом любые текстовые данные перемещаемые из приложения (любого приложения в момент работы программы) через буфер, будут преобразованы в UNICODE и правильно поняты приложением-приемником.
Цитатаmishem ()
Как я понимаю символы там в юникоде
Т.е. ты хочешь в NB читать из буфера юникодовский текст?
Цитатаmishem ()
Можно как нибудь в плагине это реализовать?
Гм... Да, вообще-то, в известном "чуде" все это давно реализовано (монитор буфера), с той лишь разницей, что не производится обработка содержимого буфера обмена.
Сейчас как вспомню про эти мнемоники (компакт-параболики) с их кодировками, так тоска берет. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Т.е. ты хочешь в NB читать из буфера юникодовский текст?
Да нет, просто написал программу что бы при копировании английского текста автоматически искала здесь варианты перевода.
ЦитатаPeter ()
Да, вообще-то, в известном "чуде" все это давно реализовано (монитор буфера)
Его я и использую. Перед поиском, чтобы не делать ненужные запросы, идет проверка каких символов больше, русских или английских. Если английских, то отправляется запрос.
При русской раскладке, все обрабатывается правильно, при английской, не видит русских символов.
Я этот вопрос задал на оффоруме, так как эта проблема не только с программированием, но и с самой НБ. Но когда они это исправят?
ЦитатаPeter ()
Сейчас как вспомню про эти мнемоники
Я так думаю тут не мнемоники, тут именно кодовые точки юникод. И не все так просто, по этому по идее должно быть уже готовое решение. Так как при английской раскладке похоже идет обращение к латинской кодовой странице, а не к кириллической.
ЦитатаPeter ()
Проверять мне лениво, но странно.
Выше мы уже определили что эта проблема появилась начиная с windows 7.
В хр эта проблема я так понимаю решалась в региональных настройках, там есть пункт, что то типа использовать язык в приложениях не поддерживающих юникод. Ставился русский, и такие приложения начинали работать правильно. В новых системах это не работает, или работает, но не везде, или не так как бы хотелось, не знаю, не проверял.
ЦитатаPeter ()
Т.е. ты хочешь в NB читать из буфера юникодовский текст?
Я хочу чтобы нб увидела кириллицу при английской раскладке. Используя монитор буфера самой нб сделать ничего не удастся. Монитор срабатывает когда текст уже помещен в буфер. В 8-ке я что то вроде еще умудрялся сделать, он похоже помещался в utf-8, и его можно было преобразовать в ancii. Текст выглядел в виде крякозябр. Сейчас текст выглядит в виде вопросительных знаков, то есть кодировка не распознается. Чтобы указать кодировку явным образом, нужно опять поместить текст в буфер обмена.
Ага, порой полезно самому с собой поговорить. Похоже пока писал, нашел решение.
Хрен там, сразу же и опроверг его. Я ж не знаю какой текст был скопирован. Все это нужно делать в плагине который понимает юникод.
ЦитатаPeter ()
Насколько я понимаю, там все наоборот
Я весь текст не читал, наткнулся на форум где были ссылки на решения. Перешел на эту, мельком глянул и решил что может подойти. Не хочешь читать хелп?
Да нет, просто написал программу что бы при копировании английского текста автоматически искала здесь варианты перевода.
Понял. Тогда получается, что тебе надо просто скопировать, приведенное тобой решение. В принципе, можно (когда все есть готовое), просто отдельный плагин сварганить. Но, только не сегодня.
У меня сейчас вообще полная ж... все рвут на части, я всем нужен и СРОЧНО! Цейтнот жуткий! Мля, у меня с начала месяца дерготни было больше, чем за последние полгода. Я уж думаю, что меня сглазили, и надо идти в церковь свечку ставить. Вот для примера: позавчера лежу дома с температурой под 39 (на работу не пошел) помираю, звонок - звонит один даааавнишний знакомый, с которым видимся раз в полгода, и просит посмотреть машину его брата - у него огни заднего хода не работают. Послать я не могу (должен я по жизни этому человеку), но ГДЕ мне смотреть "лампочки"? На улице под открытым небом зимой? Тут база нужна, инструмент, а я уже лет 15 как завязал со всей автоэлектрикой (когда охранки ставил). И вот так каждый день!
Цитатаmishem ()
эта проблема появилась начиная с windows 7.
И все же не могу удержаться. Да если бы только эта проблема. ВЕЗДЕ, где приходится переходить с хрюши на семерку, моментально начинаются проблемы! ВЕЗДЕ! И даже на бухгалтерских машинах! И не все проблемы получается решить. И это называется "прогресс".
Один мой бывший коллега почти год отсидел на семерке (ради игрух), месяц назад плюнул на весь этот геморр, и вернулся на хрюшу! - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Тогда получается, что тебе надо просто скопировать, приведенное тобой решение.
Не понял, какое решение?
Нужно что бы монитор буфера обмена автоматически преобразовывал текст в кириллицу, в кодировку ANSI.
ЦитатаPeter ()
Но, только не сегодня.
Ну до 12 ночи еще много времени, успеешь отдохнуть.
Добавлено (19 Декабря 2015, 19:21) --------------------------------------------- т.е. как я понимаю решение этой проблемы... Плагин должен поддерживать юникод и служить в качестве промежуточной программы между буфером обмена и нб. Нб при английской раскладке клавиатуры копирует текст как я понимаю в кодировке Western European кодовая страница 1252. В плагине нужно просто этот текст перекодировать в Cyrillic 1251 и снова отправить в буфер обмена. И фсе. А если делать плагин универсальным, то он должен сначала определить локаль системы, и перекодировать текст в эту кодировку. Тогда этим плагином смогут пользоваться пользователи других стран.
Добавлено (19 Декабря 2015, 21:59) ---------------------------------------------
ЦитатаPeter ()
И все же не могу удержаться. Да если бы только эта проблема.
В интернете нашел такое решение. Можно как нибудь в плагине это реализовать?
Ну, скопипастить одну единственную функцию я, как-нибудь, смогу. Тяжело, конечно, будет, но я постараюсь!
Цитатаmishem ()
Плагин должен поддерживать юникод и служить в качестве промежуточной программы между буфером обмена и нб. Нб при английской раскладке клавиатуры копирует текст как я понимаю в кодировке Western European кодовая страница 1252. В плагине нужно просто этот текст перекодировать в Cyrillic 1251 и снова отправить в буфер обмена. И фсе. А если делать плагин универсальным, то он должен сначала определить локаль системы, и перекодировать текст в эту кодировку. Тогда этим плагином смогут пользоваться пользователи других стран.
Ага! И Нью-Васюки станут межгалактическим шахматным центром.
Цитатаmishem ()
В хр такая проблема тоже была. :)
Да и хрен с ней, с проблемой! У меня ее нет! Люди сами себе создают проблемы, а потом "героически их решают". Я же просто подхожу к кому, включаю его, и спокойненько занимаюсь тем, что мне нужно, а не за номерами версий слежу.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться