Как прорисовать левый верхний символ экрана?

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Возникла такая задача:
Из панелей нужно запустить компилятор LaTeX. Компилятор при обнаружении ошибки запрашивает, что делать и при определённом ответе создаёт специальный файл, в который записывает № строки и имя файла, где ошибка. Далее надо проверить, есть ли такой файл, и при наличии вызвать редактор.
Я написал скрипт, который это делает. Но после его работы в том случае, если компилятор запрашивал ответ, но редактор не вызывался, оказывается непрорисованным левый верхний символ экрана. Я понимаю, что это связано с тем, что в этом месте FAR рисует P при проигрывании скрипта, и если компилятор считывает ввод с клавиатуры, то что-то сдвигается. Я боролся с этим при помощи panel.RedrawPanel. Если активна левая панель, то уголок удаётся прорисовать, а если активна правая, то нет.
Сразу предупреждаю, что версия FAR у меня совсем не новая (3.0.3525), а проблема не настолько критична, чтобы обновляться. Тем не менее, если есть простой способ - подскажите.
На всякий случай прикладываю скрипт (Специальный файл я назвал workfile='___.___').
User avatar
John Doe
Бюрократ
Posts: 13848
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by John Doe »

iva wrote: Если активна левая панель, то уголок удаётся прорисовать, а если активна правая, то нет.
Можно ведь перерисовать левую панель (ещё проще обе сразу).
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Можно ведь перерисовать левую панель (ещё проще обе сразу).
А не могли бы Вы подсказать, как.
Я нашел только panel.RedrawPanel, которая перерисовывает активную или пассивную панель. Похоже, что FAR после выполнения скрипта убирает символ P и перерисовывает активную панель. При этом, если она левая, то все ОК. А если она правая, то поскольку пассивная панель не перерисовывается, в левом углу остаётся дефект.
Я ещё пробовал переделать скрипт в макрос и играть с ключами, но тут мне совсем не найти никаких описаний.
User avatar
John Doe
Бюрократ
Posts: 13848
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by John Doe »

iva wrote: которая перерисовывает активную или пассивную панель.
Попрбуйте не "или", а "и".
panel.RedrawPanel(nil,0)
panel.RedrawPanel(nil,1)
User avatar
CDK
Posts: 309
Joined: Thu 28 Apr, 2005 08:28
Has thanked: 13 times
Been thanked: 3 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by CDK »

Можно еще, наверное, SaveScreen/RestoreScreen (последнее перед вызовом редактора).
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Я уже перепробовал множество вариантов. Ничего не выходит.
Проблема, видимо, в другом. Как я понимаю, FAR после того, как отработает скрипт, выполняет следующие действия: 1. Убирает символ P; 2. Перерисовывает активную панель. То есть, меняет изображение, которое остаётся после работы скрипта. При этом, если во время работы скрипта происходил ввод в стороннюю программу (компилятор LaTeX), FAR ошибается при восстановлении символа в верхней левой позиции (где было P при выполнении скрипта). Я заметил, что если убрать вызов panel.GetUserScreen, то проблемы не возникает.
User avatar
John Doe
Бюрократ
Posts: 13848
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by John Doe »

iva wrote: Проблема, видимо, в другом.
Сложно сказать, у меня например не воспроизводится.
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by zg »

John Doe wrote:Сложно сказать, у меня например не воспроизводится.
iva wrote:Сразу предупреждаю, что версия FAR у меня совсем не новая (3.0.3525)
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Попробовал на 4384 (x64) под windows 10. Действительно, не воспроизводится. Но пропадает линейка клавиш внизу экрана. Она оказывается пропадала и раньше, но я работал с выключенной и не замечал.
Проблема, наверное не Far, а в той программе, которую я запускаю из скрипта. Видимо в ней не все корректно при осуществлении ввода с клавиатуры. Написал простенькую программу на фортране и откомпилировал Compaq Visual Fortran 6.6.С под x86. С ней схожая проблема: после работы скрипта не прорисовывается строка клавиш. Прикладываю минимальный скрипт и фортрановскую программу.
Attachments
test.7z
(125.33 KiB) Downloaded 49 times
User avatar
zg
zero-gravity
Posts: 6034
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Как прорисовать левый верхний символ экрана?

Post by zg »

4386.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Пытаюсь перейти на 4386, но попортились все мои макросы. В новой версии при их исполнении устанавливается текущей windows\system32.
Подскажите, пожалуйста, как исправить.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Как прорисовать левый верхний символ экрана?

Post by Shmuel »

iva wrote: попортились все мои макросы.
Приведите пример хотя бы одного испортившегося макроса.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Удивительно. Исправилось само. Что было, не знаю, но эффект состоял в том, что при исполнении скриптов текущей устанавливалась директория windows\system32, и соответственно файлы не находились.
В 4386 экран перерисовывается правильно сам. Спасибо.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Всё-таки некоторые макросы сломались. Похоже, произошли изменения с выполненим editor.Redraw. Может нужны теперь макросу какие-то дополнительные ключи. Например, вот такой макрос Я его писал, еще когда не умел присать маросы в scripts, а только в internal. Теперь в новой версии FAR я не вижу, что ввожу после \ , пока не завершится макрос.
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Как прорисовать левый верхний символ экрана?

Post by iva »

Прошу прощения. Оказывается flags="EnableOutput".
Вообще инструкций-описаний катастрофически не хватает новому пользователю. Тем более что FAR быстро развивается.
Post Reply

Return to “Нужна помощь”