Multi-Edit 7.0

Софт только для использования в DOS

Re: Ошибка Restore Warning

Сообщение apfusov » 20 янв 2012, 09:47

Удаление всех файлов из папки STATUS не помогает. Теперь окно ошибки не появляется но открывается один файл
с двумя окнами (в одном текст со спецзнаками, а в другом код двоичный этого файла). Я думаю, скорее всего, это
система глюканула.....
Последний раз редактировалось apfusov 30 сен 2023, 23:41, всего редактировалось 1 раз.
apfusov
Даунгрейдер
 
Сообщения: 6
Зарегистрирован: 11 ноя 2011, 00:02

Открыть двоичный файл как текстовый

Сообщение SergeCpp » 20 янв 2012, 11:18

Если файл открывается таким образом, то это происходит потому, что или открываемый текстовый файл определяется как двоичный или для этого типа файла (расширения имени файла) назначен шестнадцатеричный тип открытия (BIN EXE COM DLL VLM DBF HLZ).

Если всё равно необходимо открыть такой файл в обычном текстовом виде, то нужно открывать его из диалога открытия нового файла (ControlF3), установив там тип ("Type" справа внизу) MS-DOS (или Unix, если это Unix-текст).

P.S. Текстовый файл определяется как двоичный в том случае, если в начале этого файла есть достаточное количество "двоичных символов" (например, символов с кодом 0; детали — макрофункция _file_type() в файле MESYS.S).
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Настройки — 'User interface' / 'Интерфейс пользователя'

Сообщение SergeCpp » 01 май 2012, 18:16

Изображение
Для изменения настроек интерфейса пользователя нажимаем 'User interface'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_01.PNG

Изображение
Настройки интерфейса пользователя.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_02.PNG



Dialog box style — стиль диалогов редактора (соответствие нажимаемых клавиш и выполняемых действий):
  • Multi-Edit classic — 'классический' стиль, использовавшийся в ранних версиях Multi-Edit.
  • Windows/SAA(CUA) — 'новый' стиль, соответствующий CUA (Common User Access,
    правила проектирования текстовых и графических интерфейсов пользователя) —
    одной из компонент SAA (Systems Application Architecture) корпорации IBM.
В описываемой модификации Multi-Edit 7.0 всегда используется 'новый' стиль диалогов.

 Развернуть: оригинальная версия Multi-Edit 7.0, `классический` стиль диалогов

 Развернуть: оригинальная версия Multi-Edit 7.0, `новый` стиль диалогов




Wildcards in File Prompts — обработка символов '?' и '*' в имени файла:
  • Load wildcards — имя, содержащее '?' или '*', при нажатии 'OK' в диалоге передаётся вызвавшей диалог
    команде, например, команда 'Открыть новый файл' при этом открывает все подходящие файлы (*).
  • Display in dir list — если в имени есть '?' или '*', то при нажатии 'OK' в диалоге или при переходе
    в список файлов список файлов обновляется с учётом этого имени.
(*) Работает только в оригинальной версии редактора. В описываемой модификации кнопка 'OK' в диалоге выбора файла,
если в пути или имени есть '?' или '*', блокируется при любом значении 'Wildcards in File Prompts' (это ошибка).



Immediately display dir in file prompts — немедленное отображение списка файлов при отображении
диалога запроса файла, иначе — только при переходе в поле списка файлов.

 Развернуть: иллюстрация работы настройки `Immediately display dir in file prompts`
Изображение
Нажав ControlF3, открываем диалог 'Edit new file' / 'Открыть новый файл' при установленной настройке
'Immediately display dir in file prompts' (это изначальное состояние настройки).
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_05.PNG

Изображение
Убираем настройку 'Immediately display dir in file prompts'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_06.PNG

Изображение
Нажав ControlF3, открываем диалог 'Edit new file' / 'Открыть новый файл' при убранной настройке
'Immediately display dir in file prompts'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_07.PNG

Изображение
Нажав Tab, переходим в поле списка файлов.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_08.PNG




Overlap split window borders — перекрывать рамки соседних связанных окон
(см. «Multi-Edit 7.0 — несколько окон для одного файла»), иначе — отображать обе соседние рамки.

 Развернуть: иллюстрация работы настройки `Overlap split window borders`
Изображение
Нажав ControlS, разделяем окно на два связанных окна при установленной настройке 'Overlap split window borders'
(это изначальное состояние настройки).
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_09.PNG

Изображение
Нажимаем ControlS (чтобы убрать разделение окон) и убираем настройку 'Overlap split window borders'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_10.PNG

Изображение
Нажав ControlS, разделяем окно на два связанных окна при убранной настройке 'Overlap split window borders'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_11.PNG




Auto-arrange compiler error window — размещать окно ошибок компиляции под окном, содержащим эти ошибки,
иначе — окно ошибок размещается как обычное полноразмерное окно.

 Развернуть: иллюстрация работы настройки `Auto-arrange compiler error window`
Изображение
Результат компиляции (F9, Enter) файла, содержащего ошибку, при установленной настройке
'Auto-arrange compiler error window' (это изначальное состояние настройки).
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_12.PNG

Изображение
Нажимаем AltF6 (чтобы закрыть временное окно 'B' вместе с окном ошибок) и убираем настройку
'Auto-arrange compiler error window'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_13.PNG

Изображение
Результат компиляции (F9, Enter) файла, содержащего ошибку, при убранной настройке
'Auto-arrange compiler error window'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_14.PNG

Изображение
Нажав ControlF6, вызываем список открытых файлов и переходим к окну ошибок 'OUTPUT' с файлом 'MEERR.TMP'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_15.PNG

Изображение
Нажав Enter, переходим к окну ошибок.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_16.PNG


Компиляция — это отдельная большая тема, детальное рассмотрение которой — в дальнейшем.



Auto-arrange minimized windows — автоматически упорядочивать значки свёрнутых (минимизированных) окон
внизу экрана, иначе — значок свёрнутого (минимизированного) окна помещается в то место экрана, где находился
левый верхний угол развёрнутого окна. Настройка учитывается при выполнении различных действий с окнами, кроме
команды 'Minimize all' из меню Window — в этом случае значки всегда упорядочиваются внизу экрана.

 Развернуть: иллюстрация работы настройки `Auto-arrange minimized windows`
Изображение
Результат свёртывания (минимизирования) окна при установленной настройке
'Auto-arrange minimized windows' (это изначальное состояние настройки).
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_17.PNG

Изображение
Создаём несколько окон: на незанятом пространстве экрана нажимаем левую кнопку мыши,
ведём указатель мыши по диагонали экрана, отпускаем левую кнопку мыши и нажимаем Esc.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_18.PNG

Изображение
Нажав AltControlZ (или левой кнопкой мыши — на 'треугольнике вниз', находящемся справа от '?No-File?'),
свёртиваем (минимизируем) окно 'D' при установленной настройке 'Auto-arrange minimized windows'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_19.PNG

Изображение
Нажав AltControlZ (или левой кнопкой мыши — на 'треугольнике вниз', находящемся справа от '?No-File?'),
свёртиваем (минимизируем) окно 'B' при установленной настройке 'Auto-arrange minimized windows'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_20.PNG

Изображение
Убираем настройку 'Auto-arrange minimized windows'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_21.PNG

Изображение
Нажав AltControlZ (или левой кнопкой мыши — на 'треугольнике вниз', находящемся справа от '?No-File?'),
свёртиваем (минимизируем) окно 'C' при убранной настройке 'Auto-arrange minimized windows'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_22.PNG




Persistent blocks — сохранять помеченное состояние области текста (помеченный блок)
при перемещении текстового курсора и редактировании текста, иначе — помеченное состояние снимается.

Изначально настройка 'Persistent blocks' установлена.

При убранной настройке 'Persistent blocks' помеченное состояние снимается само собой почти сразу (это ошибка).

Поля ввода строк в диалогах редактора действуют так, как если бы настройка 'Persistent blocks' была убрана.



Inclusive stream blocks — включать в помечаемый потоковый (*) блок текста самый правый символ (**),
иначе — самый правый символ в потоковый блок не включается.

(*) Чтобы пометить потоковый (непрерывный, stream) блок текста, нужно нажать ControlF7 в начале или конце блока,
переместить курсор в конец или начало блока и нажать F7 (или ControlF7). Или можно нажать ПравыйShift и,
удерживая его нажатым, переместиться в нужное место и отпустить ПравыйShift.

 Развернуть: помечен потоковый блок текста


(**) При пометке слева направо это символ, на котором находится курсор, а при пометке справа налево — символ,
на котором началась пометка.

Поля ввода строк в диалогах редактора учитывают состояние настройки 'Inclusive stream blocks'.

Изначально настройка 'Inclusive stream blocks' установлена.

 Развернуть: пометка потокового блока текста при установленной настройке `Inclusive stream blocks`
Изображение
Устанавливаем курсор на первый символ помечаемого текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_24.PNG

Изображение
Нажав ControlF7, начинаем пометку потокового блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_25.PNG

Изображение
Нажимаем Вправо.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_26.PNG

Изображение
Нажимаем Вправо.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_27.PNG

Изображение
Нажав F7, завершаем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_28.PNG

Изображение
Нажав AltF7, убираем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_29.PNG

Изображение
Нажав ControlF7, начинаем пометку потокового блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_30.PNG

Изображение
Нажимаем Влево.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_31.PNG

Изображение
Нажимаем Влево.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_32.PNG

Изображение
Нажав F7, завершаем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_33.PNG

 Развернуть: пометка потокового блока текста при убранной настройке `Inclusive stream blocks`
Изображение
Нажав AltF7, убираем пометку блока текста, затем убираем настройку 'Inclusive stream blocks'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_34.PNG

Изображение
Нажав ControlF7, начинаем пометку потокового блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_35.PNG

Изображение
Нажимаем Вправо.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_36.PNG

Изображение
Нажимаем Вправо.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_37.PNG

Изображение
Нажав F7, завершаем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_38.PNG

Изображение
Нажав AltF7, убираем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_39.PNG

Изображение
Нажав ControlF7, начинаем пометку потокового блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_40.PNG

Изображение
Нажимаем Влево.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_41.PNG

Изображение
Нажимаем Влево.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_42.PNG

Изображение
Нажав F7, завершаем пометку блока текста.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_43.PNG




Confirm file overwrites — запрашивать подтверждение перезаписи существующего файла,
если такая запись производится командой ControlF2 (и в некоторых других случаях)
и если при этом имя файла не изменялось (в диалоге команды ControlF2)
и если при этом запись производится первый раз за время редактирования.

Если настройка убрана, то такая запись выполняется без запроса подтверждения.

Изначально настройка 'Confirm file overwrites' установлена.



Bypass compiler menus with only 1 entry — пропускать меню компиляции (F9), если в этом меню
есть только один пункт, немедленно выполняя назначенную для этого пункта команду,
иначе — меню с одним пунктом отображается. Если в меню компиляции несколько пунктов,
то такое меню отображается при любом состоянии настройки.

Изначально настройка 'Bypass compiler menus with only 1 entry' убрана.

 Развернуть: иллюстрация работы настройки `Bypass compiler menus with only 1 entry`
Изображение
Нажав F9, вызываем меню компиляции для файла WORD.RE. В этом меню есть только один пункт.
Меню отображается, так как настройка 'Bypass compiler menus with only 1 entry' изначально убрана.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_44.PNG

Изображение
Нажав Enter, выполняем команду, назначенную для этого пункта меню.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_45.PNG

Изображение
Нажимаем AltF6 (чтобы закрыть окно 'B' с результатами выполнения команды)
и устанавливаем настройку 'Bypass compiler menus with only 1 entry'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_46.PNG

Изображение
Нажав F9, немедленно выполняем команду, назначенную для пункта меню компиляции файла WORD.RE.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_47.PNG

Изображение
Меню компиляции, состоящее из нескольких пунктов, отображается при любом состоянии настройки
'Bypass compiler menus with only 1 entry'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_48.PNG


Компиляция — это отдельная большая тема, детальное рассмотрение которой — в дальнейшем.



Unix-style regular expressions — использовать при поиске регулярные выражения в стиле Unix,
иначе — использовать регулярные выражения в стиле Multi-Edit classic ('классический' стиль,
использовавшийся в ранних версиях Multi-Edit).

Изначально настройка 'Unix-style regular expressions' установлена.

 Развернуть: регулярные выражения в справочной системе Multi-Edit
Изображение
Нажав F1, вызываем справочную систему Multi-Edit и перемещаемся (клавишами Вверх, Вниз, Влево и Вправо
или указателем мыши) к пункту 'Выражения для поиска' (он слева).
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_49.PNG

Изображение
Нажав Enter, открываем раздел 'Выражения для поиска'.

('Выражения языка Perl' — тип регулярных выражений, который может использоваться при поиске в файлах.)
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_50.PNG

Изображение
Нажав Enter, открываем раздел 'Выражения для поиска в стиле Unix'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_51.PNG

Изображение
Нажав последовательно Backspace, Вниз и Enter, открываем раздел 'Classic style regular expressions'.
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_52.PNG

 Развернуть: регулярные выражения в диалогах поиска и замены
Изображение
Диалог поиска (F5), задано использование регулярных выражений ('Задано выражение').
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_53.PNG

Изображение
Диалог замены (ControlF5), задано использование регулярных выражений ('Задано выражение').
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_54.PNG

Изображение
Диалог поиска в файлах (ControlF), задано использование регулярных выражений ('Задано выражение').

(Искать в файлах можно с использованием регулярных выражений языка Perl, отметив 'Выражение Perl'.
См. пример использования в «Количество слов в тексте».)
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_55.PNG

Изображение
Диалог замены в файлах (пункт 'Replace in files...' в меню Search), задано использование регулярных
выражений ('Задано выражение').

(Регулярные выражения языка Perl нельзя использовать при замене в файлах, пункт 'Выражение Perl' отключён.)
В полный размер: http://old-dos.ru/screenshot/1328/ME_CUSTOMIZE_USER_INTERFACE_56.PNG




Restore previous status — метод сохранения и восстановления предыдущего состояния редактирования:
  • No restore — состояние не сохраняется и не восстанавливается
    (из-за ошибки состояние всё же иногда сохраняется по методу 'One global status file'
    и в некоторых случаях может быть восстановлено, однако, полагаться на это не следует).
  • Status file in each dir — состояние сохраняется в файле STATUS.ME в том каталоге,
    в котором мы находились при запуске Multi-Edit.
  • One global status file — состояние сохраняется в файле STATUS.ME в основном каталоге Multi-Edit
    (каталоге, в котором находится ME.EXE).
  • Encoded status files for each dir — состояние сохраняется в специальных 'файлах-сессиях'
    (см. «Multi-Edit 7.0 — сессии редактирования»).
Status file path — каталог, в который помещаются 'файлы-сессии'.

Изначально используется метод 'Encoded status files for each dir' и 'сессии' помещаются в каталог STATUS.



Внесённые изменения вступают в действие сразу после нажатия 'OK' в этом диалоге (легко проверять).
Для того, чтобы эти изменения действовали и в дальнейшем, нужно сохранить настройки,
см. «Настройки — предварительные сведения».
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Landa » 14 июл 2012, 17:30

Огромное спасибо за столь широко развёрнутую тему! Впечатлила качественность всех постов. У меня кстати тоже есть редактор Мульти-Эдит, но только англоязычный и кажется значительно более ранней версии. Установила посмотрела, но лично мне не пригодился практически. Хотя ваши посты с удовольствием просмотрела! Спасибо Вам за тему, прямо как учебник для нормального освоения. :D
Последний раз редактировалось Landa 30 сен 2023, 23:41, всего редактировалось 1 раз.
Не работающие, поломавшиеся компьютеры:
Pentium-1(133/166)/Celeron - 266/AMD-K-6-333/Celeron - 800/
Аватара пользователя
Landa
Самая-самая
 
Сообщения: 1866
Зарегистрирован: 14 июл 2012, 16:04
Откуда: Россия
Железо: AT-486, Pentium-1(133/166mmx),P-4, Celeron-266, 366, 1100, AMD-k-6-2, AMD-64, Pentium-Core-2Duo

Multi-Edit 7.0 и Windows 7

Сообщение SergeCpp » 10 июн 2013, 14:21

Multi-Edit 7.0, запущенный в операционной системе Windows 7 32-bit:

Изображение
В полный размер.

Видно, что поддержка длинных имён в DOS-подсистеме, включённая в NT-based системы начиная с Windows 2000, работает и в Windows 7.

Эксперимент любезно провёл Nika.
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Landa » 10 сен 2013, 14:20

Неожиданно! И не думала что в "Виндоувс-семёрке" может свободно запускаться "Мульти-Эдит". Спасибо за информацию. :!: :idea:
У меня пока правда Мульти-Эдит (почти такой же или такой же даже) как на вашем скрине установлен и работает в MS-DOS-6.20. Ну, т.е. под "чистый" Дос...
Последний раз редактировалось Landa 30 сен 2023, 23:41, всего редактировалось 2 раз(а).
Не работающие, поломавшиеся компьютеры:
Pentium-1(133/166)/Celeron - 266/AMD-K-6-333/Celeron - 800/
Аватара пользователя
Landa
Самая-самая
 
Сообщения: 1866
Зарегистрирован: 14 июл 2012, 16:04
Откуда: Россия
Железо: AT-486, Pentium-1(133/166mmx),P-4, Celeron-266, 366, 1100, AMD-k-6-2, AMD-64, Pentium-Core-2Duo

Multi-Edit 7.0 — запускаем макроотладчик

Сообщение SergeCpp » 12 июл 2014, 05:56

Пока я не собрался развёрнуто написать о макроотладчике (описание настроек нужно бы завершить сначала), прочесть краткую (и вместе с тем достаточную для самостоятельного повторения) методику его запуска можно в следующем сообщении параллельной темы: viewtopic.php?p=7402#p7402
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 2 раз(а).
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0 — запускаем макроотладчик

Сообщение Nika » 13 июл 2014, 03:27

SergeCpp писал(а):Пока я не собрался развёрнуто написать о макроотладчике (описание настроек нужно бы завершить сначала), прочесть краткую (и вместе с тем достаточную для самостоятельного повторения) методику его запуска можно в следующем сообщении параллельной темы: viewtopic.php?p=7402#p7402
SergeCpp,
спасибо, разобрался, всё работает.




-- Добавлено --
Ещё такой вопрос. Запутался с представлениями адресов.
Если "taddr=14542" это 38СEh (пускай, ближний адрес в сегменте данных),
то что такое "str_addr=-1914568704" ? - это какой-то dword адрес 8DE2'0000h, сконвертированый в дес.строку.
Это что - сконвертированное в строку dword в формате far-указателя? Или какой-то линейный адрес?..
Надо ли понимать, что это 8DE2:0000 ?

.
Разобрался... Теперь работает и WATCH_CHAR.
.
Вложения
medebug.png
medebug.png (5.69 Кб) Просмотров: 59898
Последний раз редактировалось Nika 30 сен 2023, 23:41, всего редактировалось 20 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 848
Зарегистрирован: 16 окт 2013, 23:21

Re: Настройки — 'User interface' / 'Интерфейс пользователя'

Сообщение Nika » 17 июл 2014, 13:37

SergeCpp писал(а):[...]
Restore previous status — метод сохранения и восстановления предыдущего состояния редактирования:
  • No restore — состояние не сохраняется и не восстанавливается
    (из-за ошибки состояние всё же иногда сохраняется по методу 'One global status file'
    и в некоторых случаях может быть восстановлено, однако, полагаться на это не следует).
  • Status file in each dir — состояние сохраняется в файле STATUS.ME в том каталоге,
    в котором мы находились при запуске Multi-Edit.
  • One global status file — состояние сохраняется в файле STATUS.ME в основном каталоге Multi-Edit
    (каталоге, в котором находится ME.EXE).
  • Encoded status files for each dir — состояние сохраняется в специальных 'файлах-сессиях'
    (см. «Multi-Edit 7.0 — сессии редактирования»).
Status file path — каталог, в который помещаются 'файлы-сессии'.

Изначально используется метод 'Encoded status files for each dir' и 'сессии' помещаются в каталог STATUS.


Придумал вот, как можно легко усовершенствовать механизм сохранения/восстановления состояния редактора
так, что это сохранение/восстановление будет выполняться не автоматически, а при нажатии на горячие клавиши
или, если настроить меню - то и из меню. - Вызов функций-обёрток из самодельного MAC-файла.

//--------------------------------
MACRO_FILE SSTATUS;
MACRO SSTATUS FROM EDIT { RM( 'EXIT^STATUS' ); MAKE_MESSAGE( 'Current status.me saved.'); }
MACRO SRESTORE FROM EDIT { WHILE( (File_Name != '?No-File?') ) { RM('WINDOW^DELWIN'); } RM( 'EXIT^RESTORE' );}

//-------------------------------

Сохранить состояние - команда SSTATUS^SSTATUS
Восстановить состояние - команда SSTATUS^SRESTORE

Назначение первой "обёртки" - только вывести сообщение 'Current status.me saved.'
Назначение второй "обёртки" - перед вызовом восстановления позакрывать все окна в редакторе.

Удобно. Пользуюсь этими функциюшками на ShftF12 / AltF12, а автоматическое сохранение/восстановление отключил.
Впрочем, одно другому не мешает. Мелочь - а приятно.
Последний раз редактировалось Nika 30 сен 2023, 23:41, всего редактировалось 2 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 848
Зарегистрирован: 16 окт 2013, 23:21

Адреса и char

Сообщение SergeCpp » 17 июл 2014, 14:22

Nika писал(а):Ещё такой вопрос. Запутался с представлениями адресов.
Если "taddr=14542" это 38СEh (пускай, ближний адрес в сегменте данных),
то что такое "str_addr=-1914568704" ? - это какой-то dword адрес 8DE2'0000h, сконвертированый в дес.строку.
Это что - сконвертированное в строку dword в формате far-указателя? Или какой-то линейный адрес?..
Надо ли понимать, что это 8DE2:0000 ?

Расскажите, что там, в чём там дело. А то я уже слабо помню. Да и тема-то -- для всех, кто и зайдёт, интересуясь.

Nika писал(а):Разобрался... Теперь работает и WATCH_CHAR.

А что там с watch_char?

Я слабо припоминаю, что оригинальная версия 7_fresh аварийно завершалась (кажется) при выполнении какой-то функции, связанной с char. Это в ME.EXE была буквально "опечатка", я поправил, в idb это есть, но я сейчас ida не открою, а по памяти -- не помню, увы.
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

status / restore

Сообщение SergeCpp » 17 июл 2014, 15:06

Nika писал(а):
Код: Выделить всё
//--------------------------------
MACRO_FILE SSTATUS;
MACRO SSTATUS FROM EDIT { RM( 'EXIT^STATUS' ); MAKE_MESSAGE( 'Current status.me saved.'); }
MACRO SRESTORE FROM EDIT {  WHILE( (File_Name != '?No-File?') ) { RM('WINDOW^DELWIN'); } RM( 'EXIT^RESTORE' );}
//-------------------------------



В моей модификации status находится НЕ в exit.mac, а в своём собственном макрофайле -- status.mac /то, что работает и вводящее в заблуждение "exit^status" -- это уже другое дело/, поэтому rm( "status /force" ) -- force нужно для того, чтобы состояние сохранялось безусловно, иначе там какие-то условия, связанные (кроме прочего) с тем, делалось ли что-нибудь со времени предыдущего сохранения (чтоб поменьше на диск писалось /кажется/). Ещё там посмотрите в шапке status про допусловие (global @stat_deny).

Насчёт srestore -- там всё не так просто, посмотрите sessmgr.s:sm_restart() и sessmgr.s:sm_switch().

Вообще, прежде, чтобы что-то там делать-менять (и то, что НА ПЕРВЫЙ ВЗГЛЯД -- легко и просто), советую разобраться, КАК там сделано аналогичное, ибо изменений много, да и в том, что не менялось по сравнению с fresh, тоже лучше разобраться (ибо там много чего хитрого).
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: status / restore

Сообщение Nika » 17 июл 2014, 15:55

SergeCpp писал(а):В моей модификации status находится НЕ в exit.mac, а в своём собственном макрофайле -- status.mac /то, что работает и вводящее в заблуждение "exit^status" -- это уже другое дело/, поэтому rm( "status /force" ) -- force нужно для того, чтобы состояние сохранялось безусловно, иначе там какие-то условия, связанные (кроме прочего) с тем, делалось ли что-нибудь со времени предыдущего сохранения (чтоб поменьше на диск писалось /кажется/). Ещё там посмотрите в шапке status про допусловие (global @stat_deny).
Насчёт srestore -- там всё не так просто, посмотрите sessmgr.s:sm_restart() и sessmgr.s:sm_switch().
Вообще, прежде, чтобы что-то там делать-менять (и то, что НА ПЕРВЫЙ ВЗГЛЯД -- легко и просто), советую разобраться, КАК там сделано аналогичное, ибо изменений много, да и в том, что не менялось по сравнению с fresh, тоже лучше разобраться (ибо там много чего хитрого).
Вашу модификацию я сейчас вообще "заморозил" - никаких изменений, пока не почувствую себя в силах (что скорей всего и не настанет).
Я уже понял, что у вас совершенно сквозная модификация и тупо пробуя её ковырять неизбежно нарушишь какую-нибудь фичу.
Эксперименирую с той версией, что из вашего архива me7_fresh.

SergeCpp писал(а):А что там с watch_char?
Я слабо припоминаю, что оригинальная версия 7_fresh аварийно завершалась (кажется) при выполнении какой-то функции, связанной с char. Это в ME.EXE была буквально "опечатка", я поправил, в idb это есть, но я сейчас ida не открою, а по памяти -- не помню, увы.
Да всё указывал str_addr в непонятные места... Причём раз в несколько прогонов и срабатывал watch_char, правда, под отладчиком. А дальше снова фигня полная. Но потом я вспомнил ваше замечание насчёт непостоянности указателя и, вроде, всё заработало как следует. Но не тестировалось почти абсолютно. Может, если затею какой-нибудь могучий макрос, потестирую серьёзней. (Посмотрите там в тексте, если интересно. Я аккуратно пометил все правки в medb610p.S. Ищите по тексту строку "//ver").
Насчёт бага с watch_char в me7.00p - спасибо, буду иметь в виду, когда соберусь потестировать его на той версии.
Попыхтеть сейчас пришлось для версии 6.10p - но, вроде, успешно.
.. А может, та моя правка в medb700p.s и относится к багу, о котором вы говорите... В общем, спасибо за замечание.
Вообще, мне всё больше нравится ковырять эту версию 6.10p. Там сейчас ещё какая-то непонятка с запуском сеанса ДОС (как сеанса, так и для компиляции). Похоже, задан слишком малый размер для переменных окружения - в сеансе ДОС команды "set=" вызывают ошибку "Недостаточно памяти для переменных окружения..."

-- Добавлено --1
А эта фича с автоматическим сохранением меня всегда, сколько помню, напрягала в ME неимоверно.
С Фотоном я в далёком прошлом даже не стал возиться, когда посмотрел на работу этой опции.
Потому, что сохраняется/восстанавливается когда угодно, но не тогда, когда надо мне.
Бывало, даже завершал сеанс DOS специально, чтобы не дать ME при завершении обновить STATUS.ME.
Зато теперь всё работает вполне нормально.
В MEL 1.00i функции сохранения/восстановления отсутствовали, поэтому я перетщил их туда практически без правок из версии ME6.10p.

-- Добавлено --2
Фууух.. Мука печатать на раздолбанной ноутбучной клавиатуре..
У кнопок разное поведение, некоторые пробиваюся совсем плохо.
Туча опечаток. Прношу извинение, если что-то не заметил.
Последний раз редактировалось Nika 30 сен 2023, 23:41, всего редактировалось 16 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 848
Зарегистрирован: 16 окт 2013, 23:21

Версии

Сообщение SergeCpp » 17 июл 2014, 17:37

Nika писал(а):Эксперименирую с той версией, что из вашего архива me7_fresh.

А почему тогда с первой 7, а не с последней, 7J? Всё же они там много, думаю, поправили, если аж столько седьмых версий навыпускали.
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Версии

Сообщение Nika » 17 июл 2014, 17:43

SergeCpp писал(а):
Nika писал(а):Эксперименирую с той версией, что из вашего архива me7_fresh.

А почему тогда с первой 7, а не с последней, 7J? Всё же они там много, думаю, поправили, если аж столько седьмых версий навыпускали.

-- А там и проблем-то нет с этим medebug - нормально работае та версия, что на паблике.
Ну, .. не знаю. Я уже привык (не знаю, может зря) не доверять всяким retail'ам. Зачастую, в "вылизанных" версиях и нужное тоже вылизано, которое оставалось в расчёте на быдущие доделки-переделки.
Да и наличие вашей модификации ME7.00p тут тоже сыграло свою роль, это безусловно.
Последний раз редактировалось Nika 30 сен 2023, 23:41, всего редактировалось 4 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 848
Зарегистрирован: 16 окт 2013, 23:21

Интересное: pos и xpos

Сообщение SergeCpp » 17 июл 2014, 18:45

Интересно, что сами разработчики будто забыли свою же встроенную функцию pos(...) -- считанное количество раз она встречается в исходниках -- и почти постоянно используют для этой цели функцию xpos(..., 1), которая ещё и медленнее (пусть и немного) работает (очевидно -- параметров больше).

Даже в macro.hlp/hlz нет упоминания pos(...), даже в последней, J (хотя в исходниках её использование можно найти).

И в примере в macro.hlp/hlz используется xpos(..., 1), а не pos(...) -- в J это страница 41.

Очень удивительно было обнаружить такое.

P.S. У меня, конечно, функция pos(...) в файле macro.hlp/hlz присутствует. И все (вроде бы) вызовы xpos(..., 1) заменены на pos(...).
Последний раз редактировалось SergeCpp 30 сен 2023, 23:41, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 585
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Пред.След.

Вернуться в Программы для DOS

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron