Читаем Введение в Автолисп полностью

<p>8. ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ</p><p>8.1. Вывод сообщений</p>

Ранее рассматривались принципы организации запросов для ввода оператором информации во время работы программы. Иногда бывает необходимо записать в файл необходимые данные, вывести на экран запрос или сообщение, не связанные с функциями getxxx, и т.п. Автолисп содержит четыре функции, отвечающие этим требованиям: prompt, print, prin1 и princ.

(prompt строка). Функция выводит строку в поле сообщений экрана и возвращает nil. В режиме двухэкранной работы сообщение выводится на оба экрана.

Следует иметь в виду, что аргумент строка должен обязательно быть строковой константой. Аргументы другого типа не принимаются. Например:

(prompt "Hello") вызывает на экран Hellonil,

(prompt hello) сообщает error: bad argument type.

(prin1 [выражение [дескриптор_файла]]). Функция выводит выражение в командную строку или записывает его в открытый для записи файл, определенный дескриптором, возвращая выражение в поле сообщений. Таким образом, адрес записи выражения определяется наличием или отсутствием аргумента дескриптор_файла. Примеры [5]:

(prin1 "Hello" f) записывает "Hello" в файл f и возвращает "Hello" в поле сообщений,

(prin1 "Hello") записывает "Hello" в командную строку и одновременно возвращает в поле сообщений, в результате чего "Hello" в текстовом поле экрана появляется дважды.

Если функция вызывается без аргументов, она возвращает (и записывает) пустую строку. При использовании prin1 в качестве последнего выражения пользовательской функции эта пустая строка обеспечивает "мягкий" выход из приложения.

(princ [выражение [дескриптор_файла]]). Функция работает аналогично предыдущей. Разница заключается в том, что при записи в файл строковой константы princ снимает ее признак (открывающие и закрывающие кавычки), тем самым делая ее доступной для чтения с помощью функции read-Iine. Действие пустой строки аналогично предыдущему.

(print [выражение [дескриптор_файла]]). В отличие от prin1 функция print предваряет выражение управляющим символом перевода строки и заключает его символом пробела.

Как уже упоминалось ранее, если Автокад обнаруживает в программе ошибку, выполнение программы прерывается, выдается сообщение о характере ошибки и осуществляется обратная трассировка программы от некорректного выражения до имени пользовательской функции, содержащей ошибку. При всех достоинствах этого процесса он обладает одним существенным недостатком. Если программа изменила конфигурацию среды, исходная конфигурация не восстанавливается, и необходимые для дальнейшей работы изменения приходится выполнять вручную. Автолисп предоставляет возможность избежать этой неприятности путем переопределения содержания сообщения об ошибке и включения в программу операции восстановления конфигурации при использований функция *error*, записываемой в формате

(*error* сообщение).

Принцип действия этой функции следующий. Если функция не определена или nil, осуществляется описанный выше процесс прерывания программы и ее трассировки глубиной до 100 выражений. Если же она определена, Автолисп вычисляет ее и результат возвращает в поле сообщений.

В практике составления программ удобно использовать эту функцию в специальной структуре, управляющей восстановлением конфигурации, например, следующей:

(defun myerr (s)

        (if (/=s "Function cancelled")

        (princ (strcat "\nError: " s))

        )

    (moder)

    (setq *error* olderr)

    (princ)

)

Теперь достаточно в главном модуле перед началом основных действий написать структуру

(setq olderr *error*)

(setq *error* myerr),

и при возникновении ошибки (например, при вводе оператором аргумента, тип которого не соответствует ожидаемому) измененные программой параметры конфигурации будут восстановлены.

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

<p>8.2. Некоторые принципы оформления программ</p>

Программирование на Автолиспе, как и на любом другом языке высокого уровня, предполагает соблюдение определенных норм и правил, облегчающих возможность использования и модификации законченных программ [5, 6].

Одним из важных компонентов программы является комментарий, в общем случае включающий в себя следующие элементы:

• имя программы, сведения об авторе, версию, дату создания;

• необходимые инструкции по использованию;

• замечания, облегчающие понимание структуры программы и логики программирования;

• собственные замечания, возникающие при прогоне и отладке программы.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных