Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

'я' в конце строки

7 views
Skip to first unread message

Vadim Hoduhin

unread,
Nov 23, 2004, 2:24:31 AM11/23/04
to
Hello All!

Alex Check 23-05-2005 г. писал:

AC> Есть грабли: маленькая русская буква 'я' в конце строки удаляется при
AC> сохранении файла, если в Editing Options включен Truncate Spaces. Как
AC> сделать, что бы MultiEdit не интерпретировал 0xFF как конец строки? Из
AC> Word delimits |255 убрал. MEW8, MEW9. Кто-нибудь сталкивался? Есть
AC> предложения?

Решение:

1. Для Multi-Edit v. 8.0j, где MEW32.exe размером 43520 байт, от 14.03.2000 г.
Исправлять только один файл:
MEWLIB32.dll, размер 485888 байт, от 14.03.2000 г. 12:44

File: MEWLIB32.dll
0000A36A: FF 20

2. Для Multi-Edit v9.10.02, где Mew32.exe размером 637440 байт, от 08.03.2004г.
Исправлять только один файл:
MeLib.dll, размер 706560 байт, от 08.03.2004 г. 12:21

File: MeLib.dll
0001C2FA: FF 20

3. Общий принцип исправления.
а). Какой файл исправлять.

Функция Save_File отвечает за сохранение файла. Она находится в библиотеке
функций:

MEWLIB32.dll - для МЕ 8.0j;
MeLib.dll - для МЕ 9.10.02.

Для остальных версий МЕ необходимо самим определить соответствующую библиотеку.
Думаю, интуитивно - понятно.

б). Чем исправлять и технология исправления.

Об этом я уже писал ранее.

в). Как найти нужные байты для исправления.

Версия 8.0j ломалась SoftIce.
По коду видно, что при сохранении идет сравнение последнего символа строки
сохраняемого файла с FF (буква я), с 09 (табуляция) и с 20 (пробел). Если да,
то длина строки уменьшается.
Чтобы не портить код программы, достаточно заменить в нем FF на 20, т.е.
убираем "я" из пречня обрезаемых символов.
Итак, находим следующую последовательность байт:

80 FA FF 74 0A (80 FA 09 74 05 80 FA 20)
^^
Такая последовательность должна быть единственной в этой библиотеке. Здесь
первая FF - это та самая "я", которую нужно заменить на 20.
Внимание! В скобках дано продолжение искомой последовательности, которое не
нужно в вышеуказанных версиях гы... мультика, но может понадобиться в других
версиях для уточнения поиска, если количество искомых последовательностей до
скобок несколько. Hе очень заумно?

Естественно, будьте осторожны. Имейте исходную копию длл, проверьте
искомую последовательность на единственность. Если вообще не нашли искомую
последовательность, попробуйте выкинуть из нее последовательно при поисках
крайний правый байт. Здесь может возникнуть вероятность множественности
нахождения таких последовательностей. В данном случае, методом проб и ошибок
можно найти нужную.

Пробуйте.


LUMEN

0 new messages