乐筑天下

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

版主及各位高手,实用函数求助!

[复制链接]

21

主题

47

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
131
发表于 2002-7-22 10:16:00 | 显示全部楼层 |阅读模式
我在乐筑天下实用函数里找到一个如下函数,但不知为什么用不了?好象也是类似于上一次的问题,里面缺少其他辅助函数文件,能否帮忙补充一下?谢谢!
回复

使用道具 举报

21

主题

47

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
131
发表于 2002-7-22 10:43:00 | 显示全部楼层
里面的rat函数不知怎么写?
由全路径和文件名返回不带扩展名的文件名

  

;;;==================================================================
;;; (JustStem cFileName)
;;;                由全路径和文件名返回不带扩展名的文件名。
;;;------------------------------------------------------------------
;;; 参数:
;;;                cFileName                str 要检查的完整路径
;;;------------------------------------------------------------------
;;;        返回:
;;;                [STR]        
;;;                示例:         (setq a "C:\\MyFolder\\MyFile.txt")
;;;                                        (JustStem a) ; 返回 "MyFile"
;;;------------------------------------------------------------------
(defun JustStem        (cFileName / fName DotLoc)
        (setq fName (justFName cFileName))
        (setq DotLoc (rat "." fName))
        (if        (> DotLoc 0)
                (substr fName 1 (1- DotLoc))
                fName
        ) ;_ end of if
) ;_ end of defun
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2002-7-22 12:35:00 | 显示全部楼层
http://www.mjtd.com/function/alisp/037.htm
回复

使用道具 举报

21

主题

47

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
131
发表于 2002-7-22 16:06:00 | 显示全部楼层
程序是写完了,但实现的办法太笨拙了吧?
(defun c:nnn()
  (setq a "C:\\MyFolder\\MyFile.txt")
  (setq kk (JustFName a))
  (setq l (strlen kk))
  (setq ll (- l 4))
  (setq st (substr kk 1 ll))
  (setq dri (strcat "md " "f:\\mm\\" st))
  (md))
(defun JustFName (cFileName / bsLoc ColonLoc)
        ;; Check for BackSlash
        (setq bsLoc (rat "\\" cfileName))
        (if        (> bsLoc 0)
                (substr cFilename (1+ bsLoc))
                (progn
                        ;; 检查盘号 ":"
                        (setq ColonLoc (rat ":" cfileName))
                        (if        (> ColonLoc 0)
                                (substr cFilename (1+ ColonLoc))
                                cFileName
                        ) ;_ end of if
                ) ;_ end of progn
        ) ;_ end of if
) ;_ end of defun
;;;==================================================================
;;; (Rat cSearchExpression cExpressionSearched)
;;;                返回指定字符串出现在另一字符串最右边的位置的数字。
;;;------------------------------------------------------------------
;;; 参数:
;;;                cSearchExpression        [STR] - 要搜索的字符串
;;;                cExpressionSearched        [STR] - 被搜索的字符串
;;;------------------------------------------------------------------
;;;        返回:
;;;                [INT] - 字符串的位置
;;;                示例:         (setq a "A Lot of Text.")
;;;                                        (Rat "Text" a) ; 返回 10
;;;------------------------------------------------------------------
(defun Rat (cSearch cSearchIn / return SearchFor cont n)
        ;; 避开特殊字符
        (cond
                (
                 (= cSearch "\\")
                 (setq SearchFor "*`\\*")
                )
                (
                 (= cSearch ".")
                 (setq SearchFor "*`.*")
                )
                (
                 (= cSearch "#")
                 (setq SearchFor "*`#*")
                )
                (
                 (= cSearch "*")
                 (setq SearchFor "*`**")
                )
                (
                 (= cSearch "~")
                 (setq SearchFor "*`~*")
                )
                (
                 (= cSearch "-")
                 (setq SearchFor "*`-*")
                )
                (
                 (= cSearch ",")
                 (setq SearchFor "*`,*")
                )
                (
                 (= cSearch "`")
                 (setq SearchFor "*``*")
                )
                (
                 T
                 (setq SearchFor (strcat "*" cSearch "*"))
                )
        ) ;_ end of cond
        
        (cond
                (
                 ;; 确定是否匹配
                 (not (wcmatch cSearchIn SearchFor))
                 (setq return 0)
                )
                (
                 T
                 (setq n (strlen cSearchIn))
                 (setq TestStr (substr cSearchIn n))
                 (setq cont T)
                 (while        Cont
                         (if (wcmatch TestStr SearchFor)
                                 (progn
                                         (setq Cont nil)
                                         (setq return n)
                                 ) ;_ end of progn
                                 (progn
                                         (setq n (1- n))
                                         (setq TestStr (substr cSearchIn n))                                 ) ;_ end of progn
                         ) ;_ end of if
                 ) ;_ end of while
                )
        ) ;_ end of cond
        return
) ;_ end of defun
(defun md()
  
  (command "sh" dri)
  )
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2002-7-23 17:05:00 | 显示全部楼层
;;;FOR R14
;;;usage: (mm "c:\\file.txt")
;;;usage: (mm "c:\\folder")
(defun MM (A / N1 N2 N3 AA)
  (defun DO_IT (BB /)
    (setq N2 BB)
    (while (/= "\\" (substr A N2 1))
      (setq N2 (1- N2))
    )
    (setq AA (substr A (+ N2 1) (- BB N2)))
  )
  (setq N1 (strlen A))
  (setq N3 N1)
  (while (and (/= N1 0) (/= "." (substr A N1 1)))
    (setq N1 (1- N1))
  )
  (if (/= N1 0)
    (DO_IT (- N1 1))
    (DO_IT N3)
  )
)
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2002-7-28 14:52:00 | 显示全部楼层
我是一个LISP新手,请问能否给我解释一下:ASC码。有什么作用,在编程时如何用??多谢!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-5-25 11:52 , Processed in 3.300798 second(s), 64 queries .

© 2020-2025 乐筑天下

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