明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2414|回复: 11

[函数] @lisp函数库:ini 配置文件相关函数

  [复制链接]
发表于 2022-6-20 06:43:50 | 显示全部楼层 |阅读模式
本帖最后由 vitalgg 于 2022-6-20 07:24 编辑

ini 配置文件相关函数
概览与示例

ini:read   解析ini文件内容
ini:parse 解析ini文件内容
ini:get    取ini某项的值
ini:set    设置 ini 某项的值
ini:save  保存配置内容到 ini 文件

ini 文件内容
d:/example.ini 文件内容如下:

  1. [aac a]
  2. a=1
  3. b=2
  4. [bb]
  5. image=C:\mmm.png
  6. b=示例
复制代码

ini:read
功能同 ini:parse

  1. (setq lst-ini (ini:read "D:\\example.ini"))

返回值:

  1. (("[aac a]" ("a" . "1") ("b" . "2")) ("[bb]" ("image" . "C:\\mmm.png") ("b" . "示例")))

ini:parse
解析 .ini 文件内容并返回相应格式的表。以下称为 ini表

  1. (setq lst-ini (ini:parse "D:\\example.ini"))

lst-ini 表格式:

  1. (("节点1" ("属性项1" . "值1")("属性项2" . "值2")("属性项3" . "值3"))
  2. ("节点2" ("属性项1" . "值1")("属性项2" . "值2")("属性项3" . "值3"))
  3. ("节点3" ("属性项1" . "值1")("属性项2" . "值2")("属性项3" . "值3")))

ini:save
保存 ini表 到指定的ini文件中

  1. (ini:save lst-ini "D:/example.ini")

ini:get
获取 某节点中的某个属性项的值。node 字符串前后可不加 []。

  1. ;; 获取 ini表中 节点 node 下 属性项 attr 的值
  2. (ini:get lst-ini node attr)


  1. ;;示例
  2. (ini:get lst-ini "bb" "image") ;; 返回结果 "C:\\mmm.png"
  3. (ini:get lst-ini "[bb]" "image") ;; 与上一句等效,返回结果 "C:\\mmm.png"
ini:set
设置 某节点中的某个属性项的值。

注意,本函数中返回修改后的结果,不会修改原 lst-ini。所以,如果需要,需将结果用 setq 赋值给 lst-ini。

  1. ;; 设置 ini表中 节点 node 下 属性项 attr 的值为 value
  2. (ini:set lst-ini node attr value)
  3. ;;示例
  4. (setq lst-ini (ini:set lst-ini "bb" "image" "C:\\nnn.jpg")) ;; 返回结果 "C:\\mmm.png"
  5. (setq lst-ini (ini:set lst-ini "[bb]" "image" "C:\\nnn.jpg")) ;; 与上一句等效,返回结果 "C:\\mmm.png"


源码见 https://gitee.com/atlisp/atlisp-lib/tree/main/src/ini

安装
将以下代码复制到 CAD 命令行内,回车即可开始安装 @lisp kernel。@lisp kernel(内核)包含 @lisp函数库 及 @lisp应用云 的基本管理功能。

(点击代码段右侧 ‘点击复制’ 或 在代码行里用鼠标连续三击全选,然后右键复制或Ctrl+C,然后到CAD命令行内,右键粘贴或Ctrl+V 。)

  1. (progn(vl-load-com)(setq o"http://atlisp.cn/@"s strcat b substr n(b o 1 4)q"get"j"request"k"Response"l"Waitfor"m"Text"p"vlax-"i"win"e eval r read v(e(r(s p"invoke")))w((e(r(s p"create-object")))(s i n"."i n j".5.1")))(v w'open q o :vlax-true)(v w'send)(v w(r(s l k))1000)(e(r((e(r(s p q)))w(r(s k m))))))


使用前的加载方法,在调用函数前运行以下代码即可。
  1. (require 'ini:*)








本帖子中包含更多资源

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

x

点评

MXS
赞赞,刚开始看函数都没看懂,还得是这篇文章,牛。(setq lst (list (list "序号" (cons "X" 500)(cons "Y" 100)(cons "宽度因子" 0.65)(cons "对正" "居中"))))   发表于 2024-4-25 22:34

评分

参与人数 2明经币 +2 收起 理由
Bao_lai + 1 赞一个!
xj6019 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-6-23 13:13:35 | 显示全部楼层
这个必须点赞了
发表于 2022-6-30 09:51:43 | 显示全部楼层
这个非常强大
发表于 2022-8-1 00:10:58 | 显示全部楼层
请问一下,如何离线调用呢?
 楼主| 发表于 2022-8-1 01:50:37 | 显示全部楼层
frybud 发表于 2022-8-1 00:10
请问一下,如何离线调用呢?

在线安装,完成后拔了网线就能离线调用。
发表于 2022-8-1 11:50:16 | 显示全部楼层
vitalgg 发表于 2022-8-1 01:50
在线安装,完成后拔了网线就能离线调用。



我把网断了。。好像不行

本帖子中包含更多资源

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

x
 楼主| 发表于 2022-8-1 14:24:54 | 显示全部楼层
直接调用函数,不用require 。
 楼主| 发表于 2022-8-1 14:26:06 | 显示全部楼层
frybud 发表于 2022-8-1 11:50
我把网断了。。好像不行

直接调用函数,不用require 。

默认自动加载全部@lisp函数库。
发表于 2023-8-27 11:26:33 | 显示全部楼层
请问要怎么找到这个的源代码?
(require '(p:* string:*))
找不到require这个函数噢!
 楼主| 发表于 2023-8-27 15:24:40 | 显示全部楼层
`中微子 发表于 2023-8-27 11:26
请问要怎么找到这个的源代码?
(require '(p:* string:*))
找不到require这个函数噢!

  1. (progn(vl-load-com)(setq s strcat h "http" o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://atlisp.""org/@"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))


安装 @lisp核心管理系统。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 08:33 , Processed in 0.220294 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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