Тема: Калькулятор для набора

Lsp

(DEFUN C:prb (/ chis nabor nn znac t2 dim ch ch1 zn2 i dcl_id r2 pp)
  (alert
    "Выберете строки содержащие \nчиловые значения, для \nдольнейшей операции с ними"
  )
  (SETQ
    dim      (getvar "dimzin")
    nabor (SSGET '((0 . "*text")))
    nn      (SSLENGTH nabor)
    i      -1
    ch1      1
    zn2      1
    pp      2
  )
  (if (< (setq dcl_id (load_dialog "D:\\Геодезия\\Лисп\\My1.DCL"))
     0
      )
    (exit)
  )
  (new_dialog "my_dial" dcl_id)
  (action_tile
    "accept"
    "(setq ch (atof (get_tile \"chislo\")))
      (setq znak (atoi (get_tile \"zzn\")))
      (done_dialog)"
  )
  (mode_tile "zzn" 1)
  (action_tile "r1" "(setq ch1 1)")
  (action_tile "r2" "(setq ch1 2)")
  (action_tile "r3" "(setq ch1 3)")
  (action_tile "r4" "(setq ch1 4)")
  (action_tile "c1" "(setq zn2 1) (mode_tile \"zzn\" 1)")
  (action_tile "c3" "(setq zn2 3) (mode_tile \"zzn\" 1)")
  (action_tile "c4" "(setq zn2 4) (mode_tile \"zzn\" 1)")
  (action_tile "c5" "(setq zn2 5) (mode_tile \"zzn\" 1)")
  (action_tile "c6" "(setq zn2 6) (mode_tile \"zzn\" 1)")
  (action_tile "c7" "(setq zn2 7) (mode_tile \"zzn\" 0)")
  (action_tile "p1" "(setq pp 1) ")
  (action_tile "p2" "(setq pp 2) ")
  (start_dialog)
  (setvar "dimzin" 1)
  (REPEAT nn
    (setq r2
       (vl-string-subst
         "."
         ","
         (CDR
           (ASSOC 1 (ENTGET (SSNAME nabor (SETQ i (1+ i)))))
         )
       )
    )
    (if    (wcmatch r2 "*@*")
      ()
      (progn
    (SETQ chis (ATOF r2)
          z2   (cond
             ((= zn2 1)
              (- (strlen (vl-string-subst "" "+" (vl-string-subst "" "." r2)))
             (strlen (rtos (atof r2) 2 0))
              )
             )
             ((= zn2 3) 0)
             ((= zn2 4) 1)
             ((= zn2 5) 2)
             ((= zn2 6) 3)
             ((= zn2 7) znak)
           )
          t2
           (ENTGET
             (SSNAME nabor i)
           )
          znac
           (cond
             ((= ch1 1) (+ ch chis))
             ((= ch1 2) (- ch chis))
             ((= ch1 3) (* ch chis))
             ((= ch1 4) (/ chis ch))
           )
          znac
           (if (minusp znac)
             (rtos znac 2 z2)
             (cond
               ((= pp 1) (strcat "+" (rtos znac 2 z2)))
               ((= pp 2) (rtos znac 2 z2))
             )
           )
          t2
           (SUBST
             (CONS 1
               znac
             )
             (ASSOC 1 t2)
             t2
           )
    )
    (entmod t2)
    (entupd (entlast))
      )
    )
  )
  (setvar "dimzin" dim)
  (unload_dialog dcl_id)
  (princ)
)

Dcl

my_dial: dialog{label="Калькулятор";
:row{label="";
:column{label="";children_fixed_height=true;
:radio_column{label="Чё делать будем?";key="k1";
:radio_button{label="число + набор";key="r1";value="1";}
:radio_button{label="число - набор";key="r2";value="0";}
:radio_button{label="число * набор";key="r3";value="0";}
:radio_button{label="набор / число";key="r4";value="0";}
}
:edit_box{label="Число"; key="chislo"; value="0"; edit_width=6;}
:radio_column{label="Ставить \"+\" ?";key="p01";
:radio_button{label="Да";key="p1";value="0";}
:radio_button{label="Нет";key="p2";value="1";}
}
}
:column{label="";children_alignment=top;
:radio_column{label="Число знаков после запятой?";key="c01";
:radio_button{label="как в исходном";key="c1";value="1";}
:radio_button{label="0";key="c3";value="0";}
:radio_button{label="1";key="c4";value="0";}
:radio_button{label="2";key="c5";value="0";}
:radio_button{label="3";key="c6";value="0";}
:radio_button{label="другое";key="c7";value="0";}
}
:edit_box{label="Число знаков"; key="zzn"; value="4"; edit_width=6;}
}}
ok_button;
}

Re: Калькулятор для набора

> "Выберете
строки содержащие \nчиловые значения, для \nдольнейшей операции с ними"
А дальше уже и смотреть не хочется, нас не уважают.

Re: Калькулятор для набора

Ну, опечатался...
Ну, не знаю я русский язык...
А в чём неуважение?