乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 77|回复: 2

[编程交流] 编辑框的验证

[复制链接]

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:21:09 | 显示全部楼层 |阅读模式
大家好,
下面是李·麦克对lisp对话代码的改编。我想用提供的代码验证编辑框。但是,初始化后提供的值无法验证。
 
有什么问题吗?。
 
提前感谢,
芦荟
  1. samp11 : dialog {                                //dialog name
  2.      label = "Pipe Lines" ;      //give it a label
  3.       : row {                                        //define row
  4.       :boxed_column {                        //define radio column
  5.       label = "Pipe diameters used (mm)" ; //give it a label
  6.        : toggle {                        //define toggle
  7.               key = "tog1" ;                                //give it a name
  8.               label = "150" ;                        //give it a label
  9.                                                
  10.               }                                       
  11.             : toggle {                        //define toggle
  12.               key = "tog2" ;                                //give it a name
  13.               label = "200" ;                //give it a label
  14.             }                               
  15.             : toggle {                        //define toggle
  16.               key = "tog3" ;                                //give it a name
  17.               label = "225" ;                        //give it a label
  18.               }                                       
  19.             : toggle {                        //define toggle
  20.               key = "tog4" ;                                //give it a name
  21.               label = "250" ;                        //give it a label
  22.             }                                       
  23.             : toggle {                        //define toggle
  24.               key = "tog5" ;                                //give it a name
  25.               label = "300" ;                       //give it a label
  26.               }                                       
  27.             : toggle {                        //define toggle
  28.               key = "tog6" ;                                //give it a name
  29.               label = "375" ;                        //give it a label
  30.             }
  31.             : toggle {                        //define toggle
  32.               key = "tog7" ;                                //give it a name
  33.               label = "450" ;                        //give it a label
  34.             }
  35.             : toggle {                        //define toggle
  36.               key = "tog8" ;                                //give it a name
  37.               label = "600" ;                       //give it a label
  38.             }
  39.        }                                        //end toggle collumn
  40.        : boxed_column {                        //define boxed column
  41.        label = "Variables" ;
  42.       
  43.       
  44.             : edit_box {                                //edit box
  45.        key = "eb1" ;
  46.        label = "Manning 'n'" ;                  
  47.        edit_width = 10 ;                               
  48.       
  49.       
  50.        }
  51.        : edit_box {                                //edit box
  52.        key = "eb2" ;                                  
  53.        label = "% part full" ;
  54.        edit_width = 10 ;               
  55.        }
  56.       }                                        //end boxed collumn
  57.       
  58.      
  59.        }                               
  60.     ok_cancel ;                                //predifined OK/Cancel
  61.    
  62.                                            //end text
  63. (defun c:samp14 ( / bit cnt dch rtn lst )
  64.    (setq lst
  65.       '(
  66.            ((150.0 120.0) (150.0 110.0) (150.0 100.0))
  67.            ((200.0 150.0) (200.0 140.0) (200.0 120.0))
  68.            ((225.0 180.0) (225.0 170.0) (225.0 160.0) (225.0 150.0))
  69.            ((250.0 200.0) (250.0 180.0) (225.0 170.0) (225.0 160.0))
  70.            ((300.0 300.0) (300.0 280.0) (300.0 260.0) (300.0 250.0) (300.0 240.0) (300.0 220.0) (300.0 200.0) (300.0 180.0))
  71.            ((375.0 350.0) (375.0 320.0) (375.0 300.0) (375.0 280.0))
  72.            ((450.0 400.0) (450.0 370.0) (450.0 350.0) (450.0 320.0))
  73.            ((600.0 500.0) (600.0 450.0) (600.0 420.0) (600.0 400.0))
  74.        )
  75.    )
  76.    (if
  77.           (<= (setq dch (load_dialog "samp11.dcl")) 0)
  78.            (princ "\nsamp11.dcl not found or could not be loaded.")
  79.        )
  80.    
  81.      (if      (not (new_dialog "samp11" dch))
  82.            (princ "\nError in samp11.dcl file.")
  83.       )
  84.       (my_init_dialog)      
  85.          (setq bit 1 cnt 1 rtn 0)
  86.            (repeat (length lst)
  87.                (action_tile
  88.                    (strcat "tog" (itoa cnt))
  89.                    (strcat "(setq rtn (boole (+ 4 (* 3 (atoi $value))) " (itoa bit) " rtn))")
  90.                )
  91.                (setq bit (lsh bit 1) cnt (1+ cnt))
  92.            )
  93.            (if (= 1 (start_dialog))
  94.                (setq bit 1
  95.                      lst
  96.                    (vl-remove-if
  97.                       '(lambda ( x / flg ) (setq flg (zerop (logand bit rtn)) bit (lsh bit 1)) flg)
  98.                        lst
  99.                    )
  100.                )
  101.            )
  102.       
  103.    (my_init_dialog)
  104. (action_tile "eb1" "(update_manning (setq man $value))")
  105. (action_tile "eb2" "(update_percentage (setq pf $value))")
  106.    (if (< 0 dch) (unload_dialog dch))
  107. (setq dl lst)
  108. (setq dl(apply 'append dl))
  109.    (princ)
  110. )
  111. (defun my_init_dialog ()      
  112.      (setq man "0.013"
  113.            pf  "50")
  114.      (set_tile "eb1" man)
  115.      (set_tile "eb2" pf)
  116.    
  117.    )
  118. (defun update_manning (val)
  119.      (cond
  120. ((equal (distof val) nil) (progn (set_tile "eb1" "invalid" (setq man "invalid")))
  121.            ((<= (distof val) 0.009) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  122.            ((>= (distof val) ) 0.018) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  123.            (t (progn (set_tile "eb1" val) (setq man val)))))
  124. (defun update_percentage (val)
  125.      (cond
  126. ((equal (distof val) nil) (progn (set_tile "eb2" "invalid" (setq pf "invalid")))
  127.            ((< (distof val) 50) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  128.            ((> (distof val) ) 66) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  129.            (t (progn (set_tile "eb2" val) (setq man val)))))
  130.    

172110kgag2rgb6to2nt0o.png
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 16:55:00 | 显示全部楼层
在消除验证定义函数括号中的错误并按如下方式重新定位初始化函数后,其工作正常:
  1. (defun C:samp16 ()
  2. (setq lst
  3.       '(
  4.            ((150.0 120.0) (150.0 110.0) (150.0 100.0))
  5.            ((200.0 150.0) (200.0 140.0) (200.0 120.0))
  6.            ((225.0 180.0) (225.0 170.0) (225.0 160.0) (225.0 150.0))
  7.            ((250.0 200.0) (250.0 180.0) (225.0 170.0) (225.0 160.0))
  8.            ((300.0 300.0) (300.0 280.0) (300.0 260.0) (300.0 250.0) (300.0 240.0) (300.0 220.0) (300.0 200.0) (300.0 180.0))
  9.            ((375.0 350.0) (375.0 320.0) (375.0 300.0) (375.0 280.0))
  10.            ((450.0 400.0) (450.0 370.0) (450.0 350.0) (450.0 320.0))
  11.            ((600.0 500.0) (600.0 450.0) (600.0 420.0) (600.0 400.0))
  12.        )
  13.    )
  14.   (setq dcl_id% (load_dialog "samp11.dcl"))
  15.    (if(not(new_dialog "samp11" dcl_id%)
  16.       )
  17.      (exit)
  18.    )
  19. (my_init_dialog)
  20. (action_tile "eb1" "(update_manning (setq man $value))")
  21. (action_tile "eb2" "(update_percentage (setq pf $value))")
  22. (action_tile "cancel" "(done_dialog) (setq userclick nil)")
  23. (action_tile "accept" "(done_dialog) (setq userclick T)")
  24. (setq bit 1 cnt 1 rtn 0)
  25.            (repeat (length lst)
  26.                (action_tile
  27.                    (strcat "tog" (itoa cnt))
  28.                    (strcat "(setq rtn (boole (+ 4 (* 3 (atoi $value))) " (itoa bit) " rtn))")
  29.                )
  30.                (setq bit (lsh bit 1) cnt (1+ cnt))
  31.            )
  32.            (if (= 1 (start_dialog))
  33.                (progn(setq bit 1
  34.                      lst
  35.                    (vl-remove-if
  36.                       '(lambda ( x / flg ) (setq flg (zerop (logand bit rtn)) bit (lsh bit 1)) flg)
  37.                        lst
  38.                    )                            
  39.                )               
  40.            )   
  41.           )  
  42. (setq dl lst)
  43. (setq dl(apply 'append dl))
  44. (unload_dialog dcl_id%)  
  45. )
  46. (princ)
  47. (defun my_init_dialog ()      
  48.      (setq man "0.013"
  49.            pf  "50")
  50.      (set_tile "eb1" man)
  51.      (mode_tile "eb1" 2)
  52.      (set_tile "eb2" pf)
  53.      (mode_tile "eb2" 2)
  54.    
  55.    )
  56. (defun update_manning (val)
  57.      (cond
  58. ((equal (distof val) nil) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  59.            ((<= (distof val) 0.009) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  60.            ((>= (distof val) 0.018) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  61.            (t (progn (set_tile "eb1" val) (setq man val)))))
  62. (defun update_percentage (val)
  63.      (cond
  64. ((equal (distof val) nil) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  65.            ((< (distof val) 50) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  66.            ((> (distof val) 66) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  67.            (t (progn (set_tile "eb2" val) (setq man val)))))
  68.    

我感谢那些看过帖子的人。
芦荟
回复

使用道具 举报

53

主题

302

帖子

249

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
265
发表于 2022-7-5 17:25:27 | 显示全部楼层
可能已经注意到,我的帖子2中的lisp代码只验证了这两个变量,没有选择管道尺寸;它返回管道的完整列表。为了消除错误,我必须遵循李的方法,如下所示:
  1. samp11 : dialog {                                //dialog name
  2.      label = "Pipe Lines" ;      //give it a label
  3.       : row {                                        //define row
  4.       :boxed_column {                        //define radio column
  5.       label = "Pipe diameters used (mm)" ; //give it a label
  6.        : toggle {                        //define toggle
  7.               key = "tog1" ;                                //give it a name
  8.               label = "150" ;                        //give it a label
  9.                                                
  10.               }                                       
  11.             : toggle {                        //define toggle
  12.               key = "tog2" ;                                //give it a name
  13.               label = "200" ;                //give it a label
  14.             }                               
  15.             : toggle {                        //define toggle
  16.               key = "tog3" ;                                //give it a name
  17.               label = "225" ;                        //give it a label
  18.               }                                       
  19.             : toggle {                        //define toggle
  20.               key = "tog4" ;                                //give it a name
  21.               label = "250" ;                        //give it a label
  22.             }                                       
  23.             : toggle {                        //define toggle
  24.               key = "tog5" ;                                //give it a name
  25.               label = "300" ;                       //give it a label
  26.               }                                       
  27.             : toggle {                        //define toggle
  28.               key = "tog6" ;                                //give it a name
  29.               label = "375" ;                        //give it a label
  30.             }
  31.             : toggle {                        //define toggle
  32.               key = "tog7" ;                                //give it a name
  33.               label = "450" ;                        //give it a label
  34.             }
  35.             : toggle {                        //define toggle
  36.               key = "tog8" ;                                //give it a name
  37.               label = "600" ;                       //give it a label
  38.             }
  39.        }                                        //end toggle collumn
  40.        : boxed_column {                        //define boxed column
  41.        label = "Variables" ;
  42.       
  43.       
  44.             : edit_box {                                //edit box
  45.        key = "eb1" ;
  46.        label = "Manning 'n'" ;                  
  47.        edit_width = 10 ;                               
  48.       
  49.       
  50.        }
  51.        : edit_box {                                //edit box
  52.        key = "eb2" ;                                  
  53.        label = "% part full" ;
  54.        edit_width = 10 ;               
  55.        }
  56.       }                                        //end boxed collumn
  57.       
  58.      
  59.        }                               
  60.     ok_cancel ;                                //predifined OK/Cancel
  61.    
  62.                                            //end text
  63. (defun C:samp16 ()
  64. (setq lst
  65.       '(
  66.            ((150.0 120.0) (150.0 110.0) (150.0 100.0))
  67.            ((200.0 150.0) (200.0 140.0) (200.0 120.0))
  68.            ((225.0 180.0) (225.0 170.0) (225.0 160.0) (225.0 150.0))
  69.            ((250.0 200.0) (250.0 180.0) (225.0 170.0) (225.0 160.0))
  70.            ((300.0 300.0) (300.0 280.0) (300.0 260.0) (300.0 250.0) (300.0 240.0) (300.0 220.0) (300.0 200.0) (300.0 180.0))
  71.            ((375.0 350.0) (375.0 320.0) (375.0 300.0) (375.0 280.0))
  72.            ((450.0 400.0) (450.0 370.0) (450.0 350.0) (450.0 320.0))
  73.            ((600.0 500.0) (600.0 450.0) (600.0 420.0) (600.0 400.0))
  74.        )
  75.    )
  76.   (cond
  77.     (  (<= (setq dcl_id% (load_dialog "samp11.dcl")) 0)
  78.        (princ "\nNo File"))     
  79.     (  (not(new_dialog "samp11" dcl_id%))
  80.        (princ "\nError"))      
  81.     (  (action_tile "eb1" "(update_manning (setq man $value))")
  82.        (action_tile "eb2" "(update_percentage (setq pf $value))")
  83.        (my_init_dialog)
  84.        (setq bit 1 cnt 1 rtn 0)
  85.            (repeat (length lst)
  86.                (action_tile
  87.                    (strcat "tog" (itoa cnt))
  88.                    (strcat "(setq rtn (boole (+ 4 (* 3 (atoi $value))) " (itoa bit) " rtn))")
  89.                )
  90.                (setq bit (lsh bit 1) cnt (1+ cnt))
  91.            )
  92.            (if (= 1 (start_dialog))
  93.                  (setq bit 1
  94.                      lst
  95.                    (vl-remove-if
  96.                       '(lambda ( x / flg ) (setq flg (zerop (logand bit rtn)) bit (lsh bit 1)) flg)
  97.                        lst
  98.                    )                  
  99.       
  100.    
  101.         )
  102.            )
  103.         )      
  104.     )
  105.       
  106.   (if (< 0 dcl_Id%) (unload_dialog dcl_Id%))
  107. (setq dl lst)
  108. (setq dl(apply 'append dl))  
  109. )
  110. (princ)
  111. (defun my_init_dialog ()      
  112.      (setq man "0.013"
  113.            pf  "50")
  114.      (set_tile "eb1" man)      
  115.      (set_tile "eb2" pf)
  116.    
  117.    )
  118. (defun update_manning (val)
  119.      (cond
  120. ((equal (distof val) nil) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  121.            ((<= (distof val) 0.009) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  122.            ((>= (distof val) 0.018) (progn (set_tile "eb1" "invalid") (setq man "invalid")))
  123.            (t (progn (set_tile "eb1" val) (setq man val)))))
  124. (defun update_percentage (val)
  125.      (cond
  126. ((equal (distof val) nil) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  127.            ((< (distof val) 50) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  128.            ((> (distof val) 66) (progn (set_tile "eb2" "invalid") (setq pf "invalid")))
  129.            (t (progn (set_tile "eb2" val) (setq pf val)))))
  130. )

 
现在它工作正常。我为这个错误道歉。
 
芦荟
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 18:29 , Processed in 1.349201 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表