Проект KeyNote NF 1.7.8.1
Проект по программе KeyNote NF 1.7.8.1 создан для нашего коллеги под ником greg ака Григорий.
-
Цитата: 78SergeyОпределение местоположения счётчиков для строк этой панели покажу в WinHex.
Ставим курсор на последнем байте строки и выделяем влево побайтово строку смотря на счётчик находящийся в нижнем правом углу программы WinHex.
Выделив всю строку соответствие не нашлось.
Продолжаем выделять ещё немного. Нашлось соответствие
У меня в WinHex курсором строка не выделяется, он выделяет только один символ. Нужно изменить какие-то параметры программы, 78Sergey?А далее проверка.
И ещё было так:3. Сделайте правки размеров блоков и строк в hex-редакторе
В чем будет заключаться проверка или правка, чтобы в результате слева в диалоге были длинные строки?Цитата: 78Sergey
В сравнении картинок почему-то у меня русские буквы не видны:
Что-то тоже изменить?15 ноября 2022 - 22:34 / #41 -
Оффлайн
Звание: Эксперт
Мастер
Сообщений: 532
Создано тем: 52
Рейтинг: 6
Репа: (269|269|0)
Баллы: 2551
Страна: не указана!
Был: 2024-11-20 20:43
Лайков: 264
Цитата: gregУ меня в WinHex курсором строка не выделяется, он выделяет только один символ.
Зажав левую кнопку мыши байты строки у вас не выделяются?В чем будет заключаться проверка или правка, чтобы в результате слева в диалоге были длинные строки?
Проверять надо работоспособность файла после правок.
Правку счётчиков надо делать в соответствии размеров длины строк и размеров блоков.В сравнении картинок почему-то у меня русские буквы не видны:
Что-то тоже изменить?
greg нравится это сообщение.15 ноября 2022 - 23:00 / #42 -
Получил приглашение поучаствовать в проекте через ЛС. В результате анализа проблемы я пришел к выводу, что
^ в левой части диалога находится компонент Delphi TTreeView.
^ Искомые (требующие перевода) строки - короткие строки Pascal - не больше 255 значащих символов и в первом байте указана текущая длина строки,
^ Код программы обрезает все символы, код которых больше 80 (128) поэтому текст пропадает, если подставить русские символы в шест. редакторе,
^ Здесь нет привычных нам ссылок на строку, блок данных считывается целиком.
На мой взгляд методика перевода следующая:
- определиться (вычислить, подсчитать) с размером неразрывного блока данных и найти ссылку на вход блока
- сделать предварительный перевод и понять, можем ли мы за счет уменьшения длины одних строк и увеличения других сохранить общий размер блока. Если да, то прекрасно, если нет, то пытаться найти свободное место в программе или добавить секцию к файлу
- Разобраться с обрезкой Русских символов. Здесь очень внимательно, не нарушит ли это работу программы. У меня был случай, когда я был вынужден помечать еще в файле нужные строки и пропускать только их.
- Использовать функцию API или написать свой код преобразования однобайтных Русских символов в UT-16 (в программе латинские символы просто расширяются нулями)
К сожалению у меня не всегда есть доступ к сайту и я потерял нить - не пойму, каким образом Вы умудрились решить проблему преобразованием кодировки. В программе строки в кодировке ASCII, которые перед отображением преобразовываются в UT-16. Причем тут UT-8, которая для латинских символов соответствует ASCII (не отличишь, пока не подставишь Русский символ)
Кроме того, каким способом, не изменяя кода программы, Вы смогли обойти ограничение - пропускать только символы из первой половины кодовой таблицы.
Однако, судя по всему, проблема решена. Попробую понять, но если Вы простыми словами объясните суть Ваших действий, скажу большой спасибо. Сам принцип.16 ноября 2022 - 10:36 / #43 -
Цитата: 78SergeyЗажав левую кнопку мыши байты строки у вас не выделяются?
Нет, 78Sergey.Цитата: 78Sergey
Вот так у меня:
Русской кодировки не видно. Моя версия WinHex - 12.5. Может проблема в ней, и нужна другая?Цитата: 78SergeyПравку счётчиков надо делать в соответствии размеров длины строк и размеров блоков.Цитата: 78SergeyПримерно также и со счётчиками размеров блоков (От первого байта FF до последнего байта строки)
Это попробую сделать, когда выяснится вопрос выделения и версии WinHex. Кроме того, непонятно, где же тогда начинается блок, если написано "От первого байта FF", хотя ОН НЕ ВЫДЕЛЕН. Может, если показать выделение блока КРАСНОЙ РАМКОЙ, а строки - синей, - станет нагляднее и понятнее, какие элементы имеются в виду и где последний байт строки?16 ноября 2022 - 11:34 / #44 -
Однако я ошибся. действительно, строки воспринимаются программой в кодировке UT-8 и та часть кода, которая, как я посчитал занимается "обрезанием" на самом деле вычленяет латинские символы, а все остальные передает для дальнейшей обработки.
То есть, если писать перевод в кодировке UT8, то Русские символы прекрасно отображаются.
А что делать с длиной строки? Ведь количество допустимых символов уменьшится вдвое?
Остается перенести блок целиком в специально созданную секцию и в ней заниматься переводом, но может возникнуть проблема с допустимой длиной коротких строк Паскаля. Впрочем, я и здесь возможно не прав, поскольку до начала значимой части строки еще остается 3 байта. Возможно это служебные байты и полностью предоставлены для указания длины строки.16 ноября 2022 - 14:23 / #45 -
Оффлайн
Звание: Эксперт
Мастер
Сообщений: 532
Создано тем: 52
Рейтинг: 6
Репа: (269|269|0)
Баллы: 2551
Страна: не указана!
Был: 2024-11-20 20:43
Лайков: 264
Мужики, прошу прощения, что я заморочил всем голову с перекодировкой в utf-8.
В utf-8 в Notepad++ перекодировать не надо.
Надо только переключить на utf-8 в Notepad++greg нравится это сообщение.16 ноября 2022 - 15:26 / #46 -
Оффлайн
Звание: Эксперт
Мастер
Сообщений: 532
Создано тем: 52
Рейтинг: 6
Репа: (269|269|0)
Баллы: 2551
Страна: не указана!
Был: 2024-11-20 20:43
Лайков: 264
Цитата: NNK_RTRОднако я ошибся. действительно, строки воспринимаются программой в кодировке UT-8 и та часть кода, которая, как я посчитал занимается "обрезанием" на самом деле вычленяет латинские символы, а все остальные передает для дальнейшей обработки.
То есть, если писать перевод в кодировке UT8, то Русские символы прекрасно отображаются.
А что делать с длиной строки? Ведь количество допустимых символов уменьшится вдвое?
Остается перенести блок целиком в специально созданную секцию и в ней заниматься переводом, но может возникнуть проблема с допустимой длиной коротких строк Паскаля. Впрочем, я и здесь возможно не прав, поскольку до начала значимой части строки еще остается 3 байта. Возможно это служебные байты и полностью предоставлены для указания длины строки.
Строки блока можно перевести Notepad++, затем сделать правки счётчиков в Hex-редакторе.
А вставка отредактированного блока в Radialix происходит без проблем.16 ноября 2022 - 15:30 / #47 -
Оффлайн
Звание: Эксперт
Мастер
Сообщений: 532
Создано тем: 52
Рейтинг: 6
Репа: (269|269|0)
Баллы: 2551
Страна: не указана!
Был: 2024-11-20 20:43
Лайков: 264
Цитата: greg
Это попробую сделать, когда выяснится вопрос выделения и версии WinHex. Кроме того, непонятно, где же тогда начинается блок, если написано "От первого байта FF", хотя ОН НЕ ВЫДЕЛЕН. Может, если показать выделение блока КРАСНОЙ РАМКОЙ, а строки - синей, - станет нагляднее и понятнее, какие элементы имеются в виду и где последний байт строки?
greg, возьмите WinHex от версии 19.8 или новее.
greg нравится это сообщение.16 ноября 2022 - 15:36 / #48 -
Оффлайн
Звание: Эксперт
Мастер
Сообщений: 532
Создано тем: 52
Рейтинг: 6
Репа: (269|269|0)
Баллы: 2551
Страна: не указана!
Был: 2024-11-20 20:43
Лайков: 264
16 ноября 2022 - 18:54 / #49 -
78Sergey, видео отличное.
Смущает сравнение со своей пробой.
Вот из видео по строке (счетчик [в правом нижнем углу]=20):
Из WinHex по той же строке с тем же выделением (счетчик=32):
Из WinHex по БЛОКУ этой же строки (счетчик=125 ???):
Теперь непонятно, что и думать (особенно по блоку - как его вписывать), хотя в видео всё наглядно и понятно. Повторил еще пару раз, а затем еще и вообще весь проект с начала. Загадка Заново проект тоже начинал по методике справочного файла члена команды "Смотрящий".
Отдельно для себя отметил: в WinHex хорошо бы настройкой усилить цвет выделения, потому что слишком слабое, плохо просматривается.Сообщение отредактировал greg 17 ноября 2022 - 10:0216 ноября 2022 - 22:15 / #50