明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6199|回复: 31

[源码] 让 Lisp 程序联网自动更新的一种方法

    [复制链接]
发表于 2018-4-19 11:47 | 显示全部楼层 |阅读模式
本帖最后由 yxp 于 2018-4-19 12:03 编辑

软件程序很难一步设计到位,通常有各种 bug,如何让 lisp 代码自动联网更新,获取最新代码?本文提供了一种轻量级的方法。用 lisp 连接 FTP 下载肯定是最快的,但是不直观,不知道更新了哪些代码。
实现思路: 用 lisp 后台分析一个网页或微博,如果找到关键字,则说明程序已更新,未找到则说明当前是最新版,不需要更新。
方法举例: 运行 lisp 打开本人的明经微博 http://www.mjtd.com/?77098,分析微博里的 lisp 代码,并下载到本地磁盘,然后让 CAD 自动加载、运行这段下载的代码。

以下代码在 win10 (x64) 系统中调试通过。

  1. ;;代码原创       by: yxp  2018/04/18
  2. (defun c:test()
  3. (vl-load-com)
  4. (setq addr "http://www.mjtd.com/?77098")
  5. (setq txt (loadhtml addr))
  6. (setq txt (car (RegExp txt "code=lisp.*/code" nil "i")))
  7. (setq txt (substr txt 10 (- (strlen txt) 14)))
  8. (setq txt (RegExp txt """ "\042" "gi"))
  9. (setq f (open "d:\\test1.lsp" "w")) ;;保存到磁盘
  10. (write-line (car txt) f)
  11. (close f)
  12. (load "d:\\test1.lsp")
  13. (princ)
  14. )


  15. ;; Lisp 读取网页信息   by: yxp  2017-4-18
  16. ;;可以用 ActiveX 方法调用 post 事件,用 Lisp 写一个网络留言本在 CAD 里运行,收集客户对程序的意见。
  17. (defun loadhtml( address / ob html)
  18.   (setq ob (vlax-create-object "Msxml2.XMLHTTP"))
  19.   (vlax-invoke-method ob "open" "get" address "false")
  20.   (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke-method (list ob "send")))
  21.     (princ "\n当前无网络连接")
  22.     (setq html (vlax-get-property ob "responseText"))
  23.   )
  24.   (vlax-release-object ob)
  25.   html
  26. )


  27. ;;加载正则表达式
  28. (defun RegExp (str mode nstr key / L)
  29.   (setq reg (vlax-create-object "vbscript.regexp"))
  30.   (vlax-put-property reg 'Pattern mode)
  31.   (foreach x '(("Global" . "*g*,*G*")("IgnoreCase" . "*i*,*I*")("Multiline" . "*m*,*M*"))
  32.     (vlax-put-property reg (car x) (if (wcmatch key (cdr x)) 1 0)))
  33.   (if nstr (setq L (list (vlax-invoke reg 'replace str nstr)))
  34.     (vlax-for x (vlax-invoke reg 'Execute str)(setq L (cons (vla-get-value x) L))))
  35.   (vlax-release-object reg)
  36.   (reverse L)
  37. )







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-4-19 17:07 | 显示全部楼层
本帖最后由 fl202 于 2018-5-15 15:09 编辑
yxp 发表于 2018-4-19 16:07
创建 Msxl2.XMLHTTP对象,调用 post 方法,发送网卡地址给服务器的 ACCESS 数据库....

是不是这样?服务器的 ACCESS 数据库是什么?
(defun posthtml(address txt1 / ob )
;;发送文字txt1到网址address
    (setq ob (vlax-create-object "Msxml2.XMLHTTP"))
    ;(setq txt1 "abc123" address "http://www.mjtd.com/home.php?mod=space&uid=344850" )
        ;(vlax-invoke-method ob "open" "get" address "false")
        (vlax-invoke-method ob "open" "post" address "false")
    ;;;...... 此处怎么写?
   
    (vlax-release-object ob)
(princ)
)
发表于 2018-4-20 08:23 | 显示全部楼层

在下以前也写过一个,只是年久失修,源码没了,(好在可以把代码直接更新在网页端,此程序仍可下载)为此很是心痛啊,告戒大家不要轻易重装系统,装系统之前一定要备份资料啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2018-4-19 16:07 | 显示全部楼层
fl202 发表于 2018-4-19 15:41
如果说:
我的程序发布后,我想知道我的程序大概有多少人在用?
怎么做法?谢谢!

创建 Msxl2.XMLHTTP对象,调用 post 方法,发送网卡地址给服务器的 ACCESS 数据库....
发表于 2018-4-19 12:34 来自手机 | 显示全部楼层
沙发,yxp太牛了
发表于 2018-4-19 15:41 | 显示全部楼层
如果说:
我的程序发布后,我想知道我的程序大概有多少人在用?
怎么做法?谢谢!
发表于 2018-4-19 21:09 | 显示全部楼层
牛了,这样也行
发表于 2018-4-19 21:30 | 显示全部楼层
服务器端也要有脚本才行
发表于 2018-4-20 07:58 | 显示全部楼层
非常不错呀,谢谢楼主共享!
发表于 2018-4-20 09:05 | 显示全部楼层
楼主高明,创意无限啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-19 11:24 , Processed in 0.656596 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表