乐筑天下

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

[编程交流] 使用dcl和lisp的计算器

[复制链接]

29

主题

49

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 08:09:01 | 显示全部楼层 |阅读模式
朋友们好,
 
问候语,
 
我正在尝试基本计算器的DCL编程。我为所有数字和函数定义了按钮。我能够在编辑框中显示一个数字,如何控制所有选中按钮的显示,直到我按下任何功能按钮。
 
请给我一个基本的想法继续与lisp程序
 
提前感谢
 
拉马纳
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:20:45 | 显示全部楼层
你这样做只是为了做吗?
 
我只是问,因为AutoCAD已经包含了一个很好的计算器。。。使用Ctrl+8切换视图。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 08:34:23 | 显示全部楼层
另一种方式
  1. (startapp "calc")
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-6 08:39:40 | 显示全部楼层
 
或者你可以在右键快捷菜单的底部找到它。如果您将其展开以查看整个内容,您可以在那里设置并保存自己的常量或基于函数的变量和自定义,以及各种快速预设转换。
090906wd6bdu6dardozprr.jpg
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:49:03 | 显示全部楼层
为了解决您的DCL问题,恐怕无法确定用户在填写编辑框时是否输入了运算符(+、-、*或/)。这是因为DCL没有关键事件;唯一的事件是当用户移动到其他互动程序时发生的ACTION_互动程序。因此,您只需要依靠按钮来输入运算符。
 
当做
米尔恰
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:53:51 | 显示全部楼层
仔细考虑一下,我会说有一个解决方案-当用户在编辑框中输入时按下,也会触发ACTION\u TILE事件;因此,如果指示用户在操作数键后按,则可以读取互动程序的内容,保留最后一个字符(如果是可接受的操作数,则验证它,如果不是),作为使用中的函数,并将互动程序清理到下一个输入。但是,如果用户忘记在操作数后按,事情就会变得复杂。
 
当做
米尔恰
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:08:47 | 显示全部楼层
我知道如何在LISP中成功监视击键的唯一方法是为自己编写一个。NET LispFunction方法,该方法使用该系统。窗户。为按键或按键事件形成命名空间以返回键枚举。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 09:13:16 | 显示全部楼层
然而,你可以使用slide_图像作为按钮,一年前我试图创建一个DCL计算器只是为了好玩。我放弃了这个想法,因为我无法绕过所有这些算术函数,尤其是“除法”
 
附件是我失败的尝试,也许你会有更好的运气。
 
090908v3ud52p57wo3ybdb.jpg
 
  1. (defun c:calD ( / _operand _values curV STotal nums)
  2. (vl-load-com)      
  3. (defun _operand (lst sym  / a)
  4.      (set_tile "Total"
  5.      (setq a (if (>= (length lst) 2)
  6.           (rtos (eval (cons (eval (read sym)) (mapcar 'atof lst))) 2)
  7.          (car lst))))
  8.       a
  9.      )
  10. (defun _values  (var str)
  11.      (setq var (strcat var
  12.                        (if (and (wcmatch var "*.*")
  13.                  (eq str "."))  "" str)))
  14.      )      
  15. (setq curV "" STotal "" nums nil)
  16. (setq Dcl_sm (load_dialog "CALCD.DCL"))
  17.   (new_dialog "Numbers" Dcl_sm)
  18.       (set_tile "Title" " pBe Calculator")
  19. (start_image "Title")
  20. (foreach slnm (setq vls '("1" "2" "3" "4" "5" "6" "7"
  21.                     "8" "9" "0" "iplus" "iminus" "idivide"
  22.                     "iequal" "imultiply" "idot" "iCan"))
  23. (setq _X (dimx_tile slnm))
  24. (setq _Y (- (dimy_tile slnm) 2))(end_image)
  25. (start_image slnm)(slide_image 1 1 _X _Y slnm)
  26. )(end_image)
  27. (foreach dgt '("1" "2" "3" "4" "5" "6" "7" "8" "9" "0" )
  28.       (action_tile dgt
  29. (vl-prin1-to-string
  30.            (quote (progn
  31.                         (setq curV (_values curv $key))
  32.                         (set_tile "Total" curV)))))
  33. )     
  34. (action_tile "idot"
  35.      "(setq curV (_values curV "."))
  36.   (set_tile "Total" curV)  ")
  37. (action_tile "iminus"
  38.      "(setq nums (cons curV nums))
  39.       (setq STotal (_operand  nums  (setq sy "-")) curV "") ")  
  40. (action_tile "imultiply"
  41.      "(setq nums (cons curV nums))
  42.       (setq STotal (_operand  nums (setq sy "*")) curV "") ")     
  43. (action_tile "iplus"
  44.      "(setq nums (cons curV nums))
  45.       (setq STotal (_operand  nums  (setq sy "+")) curV "") ")      
  46. (action_tile "iequal"
  47.      "(set_tile "T" (setq STotal (_operand  (cons curV nums) sy)))(setq curV "" nums nil)")
  48. (action_tile "iCan" "(setq curV "" nums nil)(set_tile "Total" "") ")      
  49. (action_tile "accept" "(done_dialog 1)")
  50. (start_dialog)
  51. (unload_dialog Dcl_sm)
  52. STotal
  53. )

 
由于某些原因,您必须将自己的幻灯片装入板条箱,因为它不接受将其作为附件
 
HTH公司
计算。DCL
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 09:32 , Processed in 0.434967 second(s), 70 queries .

© 2020-2025 乐筑天下

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