WYLEK.ru

avatar_yaesu-103

Программа для ЧПУ

Автор yaesu-103, 22 января 2015, 15:39:00

« Freemore ISO Maker Burner | крякозябры в FxSound 2 »

0 Пользователи и 1 гость просматривают эту тему.

yaesu-103Автор темы

https://wylek.ru/_st/traffic.gif

Система Windows8 X64. Имеется EXE-шник. Программа для управления частотными приводами.
Программа - это интелектуальная разработка программиста или группы программистов, в которой реализованы определеные алгоритмы для выполнения каких-то конкретных задач. Наваять можно что угодно, в зависимости от уровня подготовки и опыта работы отдельно взятого программиста.

В этой программе для строк меню используется кодировка Unicode, а для строк диалоговых окон - ANSI. Так как исходная строка имеет кодировку Unicode, то выполняется конвертация из Unicode в ANSI. Для символов латинского алфавита преобразование можно сделать элементарно: у каждого символа просто удаляется второй байт, который является нулевым.

После установки программы в папке Bin есть две dll.  res044.dll и res049.dll
Вот эти dll-ки   (42176053) (42176054)


Подскажите что делаю не так. В любом редакторе ресурсов я вижу вот это

https://wylek.ru/_fr/1/thumbs/s7688680.jpghttps://wylek.ru/_fr/1/thumbs/s3342908.jpg

Так выглядят диалоговые окна. А меню программы отображается на русском.

https://wylek.ru/_fr/1/thumbs/s6969364.jpg

Это после HEX редактора

https://wylek.ru/_fr/1/thumbs/s3528647.jpg

После HEX редактора в Radialix-е. Вот попробовал в HEX редакторе. Получается что меню программы в кодировке UTF-16 а диалоговые окна в ANSI такое возможно ???????
  •  

yaesu-103Автор темы

Подскажите что делаю не так. В любом редакторе ресурсов я вижу вот это

Показать / Скрыть текст
https://wylek.ru/_fr/1/7688680.jpg
[свернуть]

Когда запускаю локализованную программу вижу вот это

Показать / Скрыть текст
https://wylek.ru/_fr/1/3342908.jpg
[свернуть]

Так выглядят диалоговые окна. А меню программы отображается на русском.
  •  

dinis124

#2
Будем играть в угадай что перевожу? Если объяснить подробнее не можете, почитайте, все есть к примеру и в этой ветке. На вскидку можете в редакторе сменить кодировку на UTF-8 и проверить файл запустив на исполнение. Если не получилось, на вкладке ресурсы посмотрите ANSI_CARSET смените на RUSSIAN_CARSET. Если не получается то нужно имя программы будет отгадать для начала.
Я говорю о редакторе Radialix в данном случае. В нем вот так: Войдите на сайт для перехода по ссылке
  •  

yaesu-103Автор темы

Извиняюсь по порядку.
Ситcема Windows8 X64. Имеется EXE-шник  Войдите на сайт для перехода по ссылке Программа для управления частотными приводами.
После установки программы в папке Bin есть две dll.  res044.dll и res049.dll
Вот эти dll-ки          Войдите на сайт для перехода по ссылке            Войдите на сайт для перехода по ссылке     (42176053) (42176054)
Проблему описал выше.
  •  

dinis124

yaesu-103
Ехе не качается. 10 минут жду.

Xotabush
Когда не распаковывается,  ставлю вчистую виртуалку, предварительно сделав снимок системы.
  •  

yaesu-103Автор темы

#5
ЦитироватьЕхе не качается. 10 минут жду.
Войдите на сайт для перехода по ссылке

Я на виртуалке под ХР пробовал. Тоже самое
  •  

yaesu-103Автор темы

dinis124

Показать / Скрыть текст
https://wylek.ru/_fr/1/6969364.jpg
[свернуть]

Это после HEX редактора

Показать / Скрыть текст
https://wylek.ru/_fr/1/3528647.jpg
[свернуть]

После HEX редактора в Radialix-е.
  •  

yaesu-103Автор темы

#7
dinis124,
Вот попробовал в HEX редакторе. Получается что меню программы в кодировке UTF-16 а диалоговые окна в ANSI такое возможно ???????
  •  

gazon01

ЦитироватьВот попробовал в HEX редакторе. Получается что меню программы в кодировке UTF-16 а диалоговые окна в UTF-8 такое возможно
надо Leserg"a подождать, это он знает, что за проблема у немецкого и русского шрифтов.
ну неможет быть меню строки с поддержкой кириллицы, а диалоги без.
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла
https://nick-name.ru/forum/OSP.gif
  •  

Leserg

Цитата: yaesu-103Получается что меню программы в кодировке UTF-16 а диалоговые окна в ANSI такое возможно ?

Конечно, а почему бы и нет? https://wylek.ru/sml/smiles/002.gif

Цитата: gazon01ну неможет быть меню строки с поддержкой кириллицы, а диалоги без.


Чё не может? Программа - это интелектуальная разработка программиста или группы программистов, в которой реализованы определеные алгоритмы для выполнения каких-то конкретных задач. Наваять можно что угодно, в зависимости от уровня подготовки и опыта работы отдельно взятого программиста.

В этой программе для строк меню используется кодировка Unicode, а для строк диалоговых окон - ANSI. Так как исходная строка имеет кодировку Unicode, то выполняется конвертация из Unicode в ANSI. Для символов латинского алфавита преобразование можно сделать элементарно: у каждого символа просто удаляется второй байт, который является нулевым. Например, возьмем строку "&Drive". В кодировке Unicode, в НЕХ-коде, она выглядит так:

260044007200690076006500

Здесь на каждый символ отводится два байта, т.е. к примеру символ D - 4400, и у символов латинского алфавита второй байт всегда нулевой. Чтобы преобразовать строку в ANSI нужно просто удалить нулевые байты и получим НЕХ-код вида

264472697665

Это будет та же строка "&Drive", но уже в кодировке ANSI. Это самый простой и быстрый способ преобразования строки из одной кодировки в другую. Причем, для строк латинского алфавита он прекрасно работает как в одну сторону, так и в другю (Unicode <-> ANSI). Посмотрите на код строки в утилите "1251 to НЕХ", он одинаковый во всех кодировках:

https://wylek.ru/_fq/0/6203967.png

А вот с другими языками, символы которых отличаются от латиницы, такой финт не пройдет. Переведем строку на русский - "&Привод". В кодировке Unicode, в НЕХ-коде, она выглядит так:

26001F044004380432043E043404

По сказанному выше алгоритму преобразования удалим у каждого символа второй байт и получим код

261F4038323E34

Но если вы посмотрите на код этой строки для кодировки ANSI, то увидите там совершенно другую картину

26CFF0E8E2EEE4

https://wylek.ru/_fq/0/6388689.png

Как видите, 261F4038323E34 (& @82>4) это совсем не 26CFF0E8E2EEE4 (&Привод). Вот и получается в программе вместо нормальных строк ерунда.

Я не знаю, какой алгоритм преобразования строк использовал программист, и показал вам один из возможных вариантов. Почему он (программист) поступил таким образом, мы никогда не узнаем. Но разрешить подобную ситуацию в данном случае можно.

Для диалоговых окон перевод строки необходимо записывать символами кодовой страницы windows-1252, т.е. в нашем понимании - кракозябрами. Например, строка "&Отмена" -> "&Îòìåíà". Применительно к редактору Radialix, это будет выглядеть следующим образом:

https://wylek.ru/_fq/0/6176319.png

Тогда в работающем приложении будет все корректно

https://wylek.ru/_fq/0/6412240.png

Неудобство такого способа - это невозможность прямого редактирования строк в случае опечаток, неточностей перевода и т.д. Нужно будет отдельно пользоваться текстовым редактором, в котором можно просто переключать кодировку. Например, AkelPad

Скопировали из Radialix"a строки в текстовый редактор (кодировка windows-1251)

https://wylek.ru/_fq/0/6163006.png

Потом переключили кодировку на windows-1252

https://wylek.ru/_fq/0/6378451.png

Получили кракозябры. Теперь переносим строки обратно в Radialix. Все.

Другой вариант более сложный. Нужно найти в программе код, где выполняется преобразование строк и сделать в нем соответствующие изменения, если это возможно. К сожалению, в этом варианте я вам пока ничем не могу помочь.
Кто ищет, тот всегда найдет!
https://nick-name.ru/forum/Leserg.gif
  •  

yaesu-103Автор темы

Вот спасибо большое, всё разложил по полочкам.
А то я уже не один месяц бьюсь с этой прогой. Я начинающий в этом деле.  Только вчера пришёл к выводу что кодировки разные. (первый раз с таким столкнулся)
Я попробовал в HEX редакторе править а потом напрямую открыть не в Radialixe (там были кракозябры) а в самой проге.
  •  

* Ваши права на сайте

    Light Portal

  • Вы можете просматривать элементы портала
  • Вы не можете управлять блоками
  • Вы не можете управлять своими страницами
  • Вы не можете размещать свои страницы без модерации

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

Яндекс.Метрика Каталог@MAIL.RU - каталог ресурсов интернет