Тема: Почему не считываются значения, введенные из dcl-файла?

Добрый день.
Создал dcl файл. Окошечко выводится и все что на нем надо тоже. Но хочется чтобы при загрузке в полях для ввода уже стояло какоето значение. Я сделал так, прямо в дсл файле изменил значение Value т.е.:

                         :edit4_box {
                         label = "D (мм.)=";
                         width = 6;
                         key = "d";
                         value = "600";

И для другого элемента

                        : toggle {
                        label = "Ось";
                        key = "ax";
                         value = "1";
                        }

В итоге: при выводе окна в этих полях отображаются введеные мною значения из дсл файла, но они почемуто не считываются. Т.е. приходится либо щелкнуть по каждому edit4_box и соответственно по toggle что бы они активировались.
Как сделать что бы не приходилось щелкать?

Re: Почему не считываются значения, введенные из dcl-файла?

До (start_dialog) считать значения этих полей:

(setq diam (get_tile "d"))
(setq axis (get_tile "ax"))

Re: Почему не считываются значения, введенные из dcl-файла?

Воспользуйся для считывания:

(action_tile
"accept"
"(SETQ D (GET_TILE \"d\") AX (GET_TILE \"ax\"))"
   )

Re: Почему не считываются значения, введенные из dcl-файла?

спасибо. я итолько добавил вот так

       (setq diam1 (atof (get_tile "d")))

без перевода программа не хотела работать

Re: Почему не считываются значения, введенные из dcl-файла?

есть кусок кода:

  (setq namber (load_dialog "proba.dcl"))
 (new_dialog "d1" namber)
 (start_dialog)
 (action_tile "accept"
              "(SETQ NON (get_tile "nam"))"
   )
 (command "!NON")

Почему при выполнении последний команды NON=nil, хотя в окне диалога по умолчанию стоит 1. Пробовал так как в последних двух примерах показывали Евгений Елпанов и Александр А.А. все равно почему-то не могу с окна диалога переменной ничего присвоить.
Подскажите пожалуйста.

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
Поскольку элементы диалога "d" и "ax" являются элементами ввода, то их редактирование надо обрабатывать в вызовах функций action_tile и сохранять в каких-то вспомогательных переменных. Если возможен вариант, что пользователь закроет окно, не трогая "d" или "ax", то на этот случай необходимо переменным установить начальные значения. Тогда все случаи работы будут учтены.

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
У тебя последовательность не правильная, попробуй:

(setq namber (load_dialog "proba.dcl"))
 (new_dialog "d1" namber)
 (action_tile "accept"
              "(SETQ NON (get_tile "nam"))"
   )
 (start_dialog)
 (command "!NON")

Re: Почему не считываются значения, введенные из dcl-файла?

> Евгений Елпанов
Не что-то не то:
; error: too many arguments
Можно ли привести мне рабочий пример считывания значения с edit-box, а там разберусь.
А то может у меня акад кривой, потому-что пример с любимой книги то же не "пашет".
Заранее благодарен.

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
Лови...
DCL

Test : dialog { label = "Test";
spacer_1;
:edit_box {
label = "D (мм.)=";
width = 6;
key = "d";
value = "600";}
: toggle {
label = "Ось";
key = "ax";
value = "1";
}
spacer_1;ok_cancel;}

LISP

(setq dcl_id (load_dialog "D:\\Test.DCL"))
(if (null (new_dialog "Test" dcl_id)) (exit))
(set_tile "d" "600")
(set_tile "ax" "1")
(action_tile
 "accept"
 "(progn(setq d (get_tile \"d\")
ax (get_tile \"ax\"))(done_dialog))")
(start_dialog)
(unload_dialog dcl_id)
(alert (strcat " d = " d "\n ax = "ax))

Re: Почему не считываются значения, введенные из dcl-файла?

> Евгений Елпанов
Большое спасибо, ловлю :) и разбираюсь...

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
А чего там разбираться.
Я переписал ваш первый пост и все советы. Ну может еще скобочек добавил и вывод результата на экран...

Re: Почему не считываются значения, введенные из dcl-файла?

> Евгений Елпанов
Ну не совсем:
Зачем задавать 2 раза значения полей d и ax,
сначало в value(файл Test.dcl), а потом явно в lsp коде?
И синтаксис чтения полей d и ax другой:
code
get_tile \"ax\", вместо того как написано в любимой книге :) - get_tile "ах"
/code

Re: Почему не считываются значения, введенные из dcl-файла?

> Евгений Елпанов
у меня выражение
code
(action_tile "accept" "(SETQ NON (get_tile \"nam\"))"
   )
/code
возвращает T, по идее должно возвращать присвоенное значение? :(

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
"Зачем задавать 2 раза значения полей d и ax,"
Незачем, просто в дсл я такие вещи не прописываю, все заполняю из лиспа - вот автоматом и написал два раза...

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
А что это за "nam"?
Код в студию...

Re: Почему не считываются значения, введенные из dcl-файла?

DCL
code
d1:dialog { label="Change";key="titl";
:edit_box {label="Numer";key="nam";edit_limit=2;edit_width=2;value="1";}
}
/code
LISP
(setq namber (load_dialog "proba.dcl"))
(new_dialog "d1" namber)
(set_tile "nam" "2")
  (action_tile "accept"
        "(progn
          (setq NON (get_tile \"nam\"))
        (done_dialog))"
        )
(start_dialog)
(unload_dialog namber)
(command !non)
/code
non получается nil

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
А что это за ерунда:

(command [b]![/b]non)

Может быть:

(command non)

?

Re: Почему не считываются значения, введенные из dcl-файла?

(command "!non")

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
Упс! А как ты диалоговое окно закрываешь? У тебя же нет кнопки с key="accept" для закрытия окна. Поэтому (action_tile "...") никогда не сработает.
Учить матчасть! :)

Re: Почему не считываются значения, введенные из dcl-файла?

Упс...
(command "!non") не будет работать
Нужно

> Александр Ривилис
(command non)
или
(command (eval non))

Re: Почему не считываются значения, введенные из dcl-файла?

Понятно спасибо, !non работает точно

Re: Почему не считываются значения, введенные из dcl-файла?

Конечно работает, если ввести в командную строку акада, но из лиспа нужно писать сразу переменную...

Re: Почему не считываются значения, введенные из dcl-файла?

> Александр Ривилис
Кнопочка есть(просто был вопросик: "А что это за "nam"?" - я и дал фрагмент диалога), но матчасть учить никогда не вредно, это правда.

Re: Почему не считываются значения, введенные из dcl-файла?

> Евгений Елпанов
Ну переменная ж глобальная, так что при выходе в акад и набора команды !non всё равно nil.

Re: Почему не считываются значения, введенные из dcl-файла?

> Sanek
Приведи полностью lisp-код и dcl-файл.