Как прорисовать левый верхний символ экрана?
Как прорисовать левый верхний символ экрана?
Возникла такая задача:
Из панелей нужно запустить компилятор LaTeX. Компилятор при обнаружении ошибки запрашивает, что делать и при определённом ответе создаёт специальный файл, в который записывает № строки и имя файла, где ошибка. Далее надо проверить, есть ли такой файл, и при наличии вызвать редактор.
Я написал скрипт, который это делает. Но после его работы в том случае, если компилятор запрашивал ответ, но редактор не вызывался, оказывается непрорисованным левый верхний символ экрана. Я понимаю, что это связано с тем, что в этом месте FAR рисует P при проигрывании скрипта, и если компилятор считывает ввод с клавиатуры, то что-то сдвигается. Я боролся с этим при помощи panel.RedrawPanel. Если активна левая панель, то уголок удаётся прорисовать, а если активна правая, то нет.
Сразу предупреждаю, что версия FAR у меня совсем не новая (3.0.3525), а проблема не настолько критична, чтобы обновляться. Тем не менее, если есть простой способ - подскажите.
На всякий случай прикладываю скрипт (Специальный файл я назвал workfile='___.___').
Из панелей нужно запустить компилятор LaTeX. Компилятор при обнаружении ошибки запрашивает, что делать и при определённом ответе создаёт специальный файл, в который записывает № строки и имя файла, где ошибка. Далее надо проверить, есть ли такой файл, и при наличии вызвать редактор.
Я написал скрипт, который это делает. Но после его работы в том случае, если компилятор запрашивал ответ, но редактор не вызывался, оказывается непрорисованным левый верхний символ экрана. Я понимаю, что это связано с тем, что в этом месте FAR рисует P при проигрывании скрипта, и если компилятор считывает ввод с клавиатуры, то что-то сдвигается. Я боролся с этим при помощи panel.RedrawPanel. Если активна левая панель, то уголок удаётся прорисовать, а если активна правая, то нет.
Сразу предупреждаю, что версия FAR у меня совсем не новая (3.0.3525), а проблема не настолько критична, чтобы обновляться. Тем не менее, если есть простой способ - подскажите.
На всякий случай прикладываю скрипт (Специальный файл я назвал workfile='___.___').
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Как прорисовать левый верхний символ экрана?
Можно ведь перерисовать левую панель (ещё проще обе сразу).
Как прорисовать левый верхний символ экрана?
А не могли бы Вы подсказать, как.Можно ведь перерисовать левую панель (ещё проще обе сразу).
Я нашел только panel.RedrawPanel, которая перерисовывает активную или пассивную панель. Похоже, что FAR после выполнения скрипта убирает символ P и перерисовывает активную панель. При этом, если она левая, то все ОК. А если она правая, то поскольку пассивная панель не перерисовывается, в левом углу остаётся дефект.
Я ещё пробовал переделать скрипт в макрос и играть с ключами, но тут мне совсем не найти никаких описаний.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Как прорисовать левый верхний символ экрана?
Попрбуйте не "или", а "и".
panel.RedrawPanel(nil,0)
panel.RedrawPanel(nil,1)
Как прорисовать левый верхний символ экрана?
Можно еще, наверное, SaveScreen/RestoreScreen (последнее перед вызовом редактора).
Как прорисовать левый верхний символ экрана?
Я уже перепробовал множество вариантов. Ничего не выходит.
Проблема, видимо, в другом. Как я понимаю, FAR после того, как отработает скрипт, выполняет следующие действия: 1. Убирает символ P; 2. Перерисовывает активную панель. То есть, меняет изображение, которое остаётся после работы скрипта. При этом, если во время работы скрипта происходил ввод в стороннюю программу (компилятор LaTeX), FAR ошибается при восстановлении символа в верхней левой позиции (где было P при выполнении скрипта). Я заметил, что если убрать вызов panel.GetUserScreen, то проблемы не возникает.
Проблема, видимо, в другом. Как я понимаю, FAR после того, как отработает скрипт, выполняет следующие действия: 1. Убирает символ P; 2. Перерисовывает активную панель. То есть, меняет изображение, которое остаётся после работы скрипта. При этом, если во время работы скрипта происходил ввод в стороннюю программу (компилятор LaTeX), FAR ошибается при восстановлении символа в верхней левой позиции (где было P при выполнении скрипта). Я заметил, что если убрать вызов panel.GetUserScreen, то проблемы не возникает.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Как прорисовать левый верхний символ экрана?
John Doe wrote:Сложно сказать, у меня например не воспроизводится.
iva wrote:Сразу предупреждаю, что версия FAR у меня совсем не новая (3.0.3525)
Как прорисовать левый верхний символ экрана?
Попробовал на 4384 (x64) под windows 10. Действительно, не воспроизводится. Но пропадает линейка клавиш внизу экрана. Она оказывается пропадала и раньше, но я работал с выключенной и не замечал.
Проблема, наверное не Far, а в той программе, которую я запускаю из скрипта. Видимо в ней не все корректно при осуществлении ввода с клавиатуры. Написал простенькую программу на фортране и откомпилировал Compaq Visual Fortran 6.6.С под x86. С ней схожая проблема: после работы скрипта не прорисовывается строка клавиш. Прикладываю минимальный скрипт и фортрановскую программу.
Проблема, наверное не Far, а в той программе, которую я запускаю из скрипта. Видимо в ней не все корректно при осуществлении ввода с клавиатуры. Написал простенькую программу на фортране и откомпилировал Compaq Visual Fortran 6.6.С под x86. С ней схожая проблема: после работы скрипта не прорисовывается строка клавиш. Прикладываю минимальный скрипт и фортрановскую программу.
- Attachments
-
- test.7z
- (125.33 KiB) Downloaded 49 times
Как прорисовать левый верхний символ экрана?
Пытаюсь перейти на 4386, но попортились все мои макросы. В новой версии при их исполнении устанавливается текущей windows\system32.
Подскажите, пожалуйста, как исправить.
Подскажите, пожалуйста, как исправить.
Как прорисовать левый верхний символ экрана?
Удивительно. Исправилось само. Что было, не знаю, но эффект состоял в том, что при исполнении скриптов текущей устанавливалась директория windows\system32, и соответственно файлы не находились.
В 4386 экран перерисовывается правильно сам. Спасибо.
В 4386 экран перерисовывается правильно сам. Спасибо.
Как прорисовать левый верхний символ экрана?
Всё-таки некоторые макросы сломались. Похоже, произошли изменения с выполненим editor.Redraw. Может нужны теперь макросу какие-то дополнительные ключи. Например, вот такой макрос Я его писал, еще когда не умел присать маросы в scripts, а только в internal. Теперь в новой версии FAR я не вижу, что ввожу после \ , пока не завершится макрос.
Как прорисовать левый верхний символ экрана?
Прошу прощения. Оказывается flags="EnableOutput".
Вообще инструкций-описаний катастрофически не хватает новому пользователю. Тем более что FAR быстро развивается.
Вообще инструкций-описаний катастрофически не хватает новому пользователю. Тем более что FAR быстро развивается.