Устранение сообщения о синтаксической ошибке при запуске меню
Если Вы создаете собственное меню, то в момент его запуска, как правило, выскакивает сообщение о синтаксической ошибке. Если его игнорировать, то дальнейшая работа программы идет без проблем. Я предлагаю несколько вариантов устранения данной ошибки.
Прислал: Владимир Максимов  Категория: Разное
Устранение сообщения о синтаксической ошибке при запуске меню
Предлагаю несколько вариантов решения.
I) Глобальный
За генерацию меню (т.е. создание файла MPR на базе вашего файла MPX) отвечает программа
GenMenu.prg.
Эта программа расположена в корневом каталоге VFP. Если Вы делали установку в директорию по
умолчанию, то это директория "C:\Program Files\Microsoft Visual Studio\Vfp98"
Откройте файл GenMenu.prg на редактирование командой:
и закоментируйте в этой функции весь условный оператор, начинающийся с фразы:
IF !IsLeadByte(prompt)
Однако, оставьте незакоментированной в нем единственную строчку
STORE "" to m.cKeyname
Т.е. соответсвующий кусок программы должен выглядеть так:
*!* IF !IsLeadByte(prompt)
*!* STORE c_key_padhotkey_LOC + UPPER(LEFT(prompt,1)) TO m.cKeyname
*!* ELSE
STORE "" to m.cKeyname
*!* ENDIF
Сохраните и откомпилируйте измененный файл GenMenu.prg.
Все. Теперь Вам остается только перегенерить все Ваши меню. Сообщение о синтаксической ошибке
больше возникать не будут.
II) Ловкость рук
Если Вы считаете, что MicroSoft не ошибается или не чуствуете в себе достаточной уверенности,
чтобы исправлять не свои файлы, то Вам остается только каким-либо способом обмануть генератор
меню:
а) Каждый пункт главной линейки меню начинать с цифры
б) Первым символом каждого пункта использовать латинскую букву похожую на русскую ("C","M","P" и
т.п.)
в) Обязательно вручную назначать комбинацию горячих клавишь для каждого пунтка меню
III) Игнорирование сообщения об ошибке
Это совсем грубый способ. Перед каждым вызовом меню, следует включать собственный обработчик
ошибок. Примерно так:
LOCAL lcOldError, lnErrorNumber
lcOldError = ON("Error")
ON ERROR lnErrorNumber = Error()
DO MyMenu.mpr
ON ERROR &lcOldError
Текущая оценка: (4.906)
Дополнения пользователей Устранение сообщения о синтаксической ошибке при запуске меню
дополнение к глобальному способу
в файле genmenu.prg в функции addkey
в условный оператор
IF NOT EMPTY(m.cKeyname)
добавить AND NOT EMPTY(m.cKeylabel)
получится
IF NOT EMPTY(m.cKeyname) AND NOT EMPTY(m.cKeylabel)