Тема: Получение значения Edit_Box в Lisp

Пишу программы на 3-х языках, но с лиспом столкнулся впервые, въезжаю туго. Элементарный пример.
В окне запрашиваю размеры ширина и высота , например. DCL - файл написал - все работает. Но получить значения в лиспе не получается.
Приведите, пожалуйста, код программы для получения этих значений и построения по ним прямоугольника. Заранее благодарен!

Re: Получение значения Edit_Box в Lisp

Фрагмент файла .lsp использующего диалог

(if
    (< (setq ndia (load_dialog "имя файла.dcl"))0)
    (exit)
    );if загрузка файла
 (if
    (not
      (new_dialog "имя диалога" ndia )
      )
    (exit)
);if загрузка диалога
(action_tile "код окна" "(setq высота(get_tile \"код окна\"))")
(action_tile "код окна" "(setq ширина(get_tile \"код окна\"))")
(start_dialog)
(unload_dialog ndia)
Далее блок отрисовки по полученным переменным - ширина и высота
    

Re: Получение значения Edit_Box в Lisp

Во всех книгах по работе с DCL из LISP'а приводится именно такая конструкция:

(if    (< (setq ndia (load_dialog "имя файла.dcl")) 0)
  (exit)
 );If
...
Обработка далога
...

Но у нее есть недостаток - если DCL-файл не найден, то программа работает как вышибала в дешевом кабаке: берет посетителя за воротник и без всяких обяснений, бормоча под нос ругательства (типа "; error: quit / exit abort"), выставляет его за дверь пинком под зад. По моему, гораздо правильнее (в том числе и с точки зрения идеологии LISP) использовать конструкцию типа:

(if    ([b]>[/b] (setq ndia (load_dialog "имя файла.dcl")) 0)
  (progn
    ...
    Обработка далога
    ...
  );progn
  (alert "Файл диалога не найден.")
 );if

В этом случае пользователь хотя бы будет знать за что его выперли из ресторана.
Удачи.

Re: Получение значения Edit_Box в Lisp

Вместо get_tile можно использовать $value.
(action_tile "edit1" "(setq ns $value)")
Кроме $value есть и другие сокращениия (если их можно так назвать).

The action assigned by action_tile supersedes the dialog box's default action (assigned by new_dialog) or the tile's action attribute, if these are specified. The expression can refer to the tile's current value as $value, its name as $key, its application-specific data (as set by client_data_tile) as $data, its callback reason as $reason, and its image coordinates (if the tile is an image button) as $x and $y.