Кибор » Кибор - Интегрированная среда разработки ботов » Отчет о ошибках » Неверная кодировка при вставке из буфера

Страниц (2): [1] 2 »
 

1. kunni - 26 Июня, 2016 - 16:01:40 - перейти к сообщению
День добрый!
Написал скрипт и собрал под ХР. Выполняется без нареканий.
При тестировании под вин7 сбой кодировки в русских символах в последовательности команд:

копировать в буфер("фраза на русском");
контрл+V;//вставить

Использовать команду key("фраза", ...) нет возможности.

Как можно исправить без изменения текста скрипта? Или собрать под вин7? Что делать?
(Добавление)
Пересобрал под вин7. То же самое.
Протестировал такую комбинацию под вин7 - при любых сочетаниях в блокнот, в браузер и т.д. из буфера обмена текст вставляется в неверной кодировке.
CODE:
writeclipboard("всем привет");
pause(1500);
ctrl_v();

//CTRL+V вставить
function ctrl_v(){keydown (CONTROL); key ('v'); keyup (CONTROL);}


Кстати, под вин7 версия 5,11, под ХР версия не обновляется и до сих пор стоит 5,06
2. Kibor - 26 Июня, 2016 - 22:51:20 - перейти к сообщению
это не ошибка.
следите что бы при такой операции если есть руские символы в кибор и блокноте(программе) стояли русские раскладки. то же самое касается при ручном копирование кода.
заблаговременно установите раскладку с помощью sendlanguage
3. kunni - 27 Июня, 2016 - 13:38:50 - перейти к сообщению
Как это не ошибка?
Странно как-то получается.
Вот я запускаю собранный exe. Открывает окно с кнопкой ПУСК. Язык стоит русский. В целевом окне (пусть будет блокнот) стоит русский. Для верности добавим команду перед вставкой:
CODE:
win w=window (-1, "Edit", window ("тест.txt — Блокнот", "Notepad", -1));

writeclipboard("всем привет");
pause(1500);
ctrl_v();

//CTRL+V вставить
function ctrl_v(){sendlanguage("00000419", w); keydown (CONTROL); key ('v'); keyup (CONTROL);}

Жмем кнопку пуск. В блокнот вставляется русское сообщение, все хорошо. Скрипт заканчивает свою работу и возвращает окно с кнопкой ПУСК. Язык уже стоит Английский (в exe кибор). Повторный запуск - вставляются иероглифы.
Это как? Это зачем он вернулся к английскому? Ладно в редакторе, а в собранном exe зачем?
Я понял, как с помощью sendlanguage поменять язык в целевом для вставке окне (в блокноте). Как поменять язык до запуска exe кибор?
Пример. Пользователь скачивает мой exe и запускает его. Это ему нужно проверять, чтобы перед запуском exe скрипта у него стоял русский язык?
4. Kibor - 27 Июня, 2016 - 14:09:15 - перейти к сообщению
 kunni пишет:
Как это не ошибка?

Нет.. Конечно безусловно ошибка.. ошибка программирования.
CODE:
win w=window ("Безымянный — Блокнот", "Notepad", -1);
sendlanguage("00000419", w);

writeclipboard("всем привет");
pause(1500);
ctrl_v();

//CTRL+V вставить
function ctrl_v()
{
keydown (CONTROL); key ('v'); keyup (CONTROL);
}


Блокнот один должен быть. указатель не на edit. он на окно быть должен......
5. kunni - 27 Июня, 2016 - 14:23:21 - перейти к сообщению
 Kibor пишет:
Нет.. Конечно безусловно ошибка.. ошибка программирования.

Прошу прощения. Делал проверочный скрипт на скорую руку. Безусловно, edit тут ни при чем. С вашим вариантом работает.
Все тонкости кибор мне еще предстоит познать! Очень нуждаюсь в более подробных статьях по старым функциям (например window), те, что на сайте в учебнике, очень сложны для понимания. Все функции, описанные на форуме, было гораздо проще осмыслить, в них куча примеров, разъяснений и способов применения.

В очередной ннадцатый раз большое СПАСИБО!

З.Ы. В моем скрипте, из-за которого мне пришлось создать эту тему, действительно в какой-то момент происходит переключение языка на английский, хотя это не требуется. Буду искать и для верности перед КОНТРЛ+В добавлю sendlanguage
(Добавление)
А вот и собственно то самое переключение раскладки посреди скрипта, из-за которого весь сыр-бор:

key ('v', 1, 1, w); вместо key ('v', 1, 0, w); или лучше key ('м', 1, 1, w);// м-русское

Так что и sendlanguage не понадобился!
6. v0id - 21 Февраля, 2017 - 16:03:00 - перейти к сообщению
Мне эта тема помогла решить проблему, когда я из другого редактора копировал текст в кибр. При любой кодировке выдовало крякозябры. Но стоило переключить раскладку на русский и все заработало нормально. Может мой вопрос не коректен, но все же интересно, не лучше ли бы было привязывать копирование текста к кодировке копируемого текста, а не к раскладке Растерялся ?
7. Medvedev - 01 Февраля, 2018 - 03:13:15 - перейти к сообщению
А если текст копируется не из программы, а читается из файла? Кодировку файла в моём случае изменять нельзя, т.к. он генерируется другой программой (игрой).
8. Zireael - 01 Февраля, 2018 - 07:39:24 - перейти к сообщению
Какая кодировка используется? Можно через командную строку скопировать содержимое файла в другой файл в ansi.
9. Medvedev - 02 Февраля, 2018 - 13:38:29 - перейти к сообщению
Zireael , Можно подробнее, как сменить кодировку командной строкой? Желательно через bat. В моем случае cp1251
10. Zireael - 02 Февраля, 2018 - 14:17:45 - перейти к сообщению
 Цитата:
В моем случае cp1251

Она же и так нормально читается.

Powered by ExBB FM 1.0 Final