Введение в Автолисп | страница 39
Следует иметь в виду, что аргумент строка должен обязательно быть строковой константой. Аргументы другого типа не принимаются. Например:
(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 выражений. Если же она определена, Автолисп вычисляет ее и результат возвращает в поле сообщений.