回 帖 发 新 帖 刷新版面

主题:跪求zx1931:请教你的历遍目录下的子目录程序”里面有不懂的地方

**陕西zx1913 自定义函数
 
  FOR JJ=1 TO 陕西ZX1913("D:\")      
=MESSAGEBOX(CARRAYNAME(JJ),48,"报告")
NEXT JJ
 
* ==============
FUNC 陕西ZX1913
  PARAMETERS CPATH   &&接收上述"D:\"
  
  CPATH=CPATH+"*.*"       &&路径加上"*.*",得到类似"c:\??\??\*.*"
  NCOUNT=ADIR(CDIRNAME,CPATH,"D")  &&&把文件属性为D,放入数组中并返回文件个数
  NN=0
  FOR II=1 TO NCOUNT
    IF "D"$CDIRNAME(II,5) AND !CDIRNAME(II,1)=="." AND !CDIRNAME(II,1)==".."
      NN=NN+1
      PUBLIC CARRAYNAME(NN)                &&&根据传递的数组名和得到的目录个数创建一个全局数组
      CARRAYNAME(NN)=ALLTRIM(CDIRNAME(II,1))  &&&&&将用adir()得到的文件和目录数组中目录名存放到自定义全局数
  ENDIF
  ENDFOR
RETURN NN    
---------------------------------------------
有几个不懂请教一下:
1、用表达式调用自定义陕西ZX1913 ,是不是这个表达式: for jj=1 TO 中的“陕西ZX1913("D:\")” ,它把变量传给 FUNC 陕西ZX1913, PARAMETERS CPATH。   

2、retunn NN ,它返回值NN是不是返回给 “陕西ZX1913("D:\")”  
3 =MESSAGEBOX(CARRAYNAME(JJ)它显示出各目录名称,那它的CARRAYNAME(JJ)与全局数组CARRAYNAME(NN)这之间如何联系?全局数组的变量如何递给CARRAYNAME(JJ)?4创建全局数组PUBLIC CARRAYNAME(NN) ,书中讲()中应是具体数字,如(1)或(2),怎么可用nn呢?
[em18]

回复列表 (共4个回复)

沙发

zx1931:你在哪里?怎么不理采呀!

板凳

这个函数是本人几年前发的,不过这个函数现在我已经不用了,在梅子论坛上发过同类帖子,这位朋友可以看以下链接:

[url=http://www.meizvfp.com/bbs/dispbbs.asp?boardid=2&Id=86247]【原创】获得给定目录下所有文件夹路径-非递归方法 [/url]

3 楼

以下是国外高手编的一个获得子目录名的函数,返回值的目录名用“;”分号隔开。
********************************************************************
*** Name.....: GETSUBDIRS.PRG
*** Author...: Andy Kramek
*** Date.....: 23/09/2004


*** Notice...: Copyright (c) 2004 Tightline Computers, Inc
*** Function.: Build a ";" separated list of SubDirectories and copy it to the clipboard
********************************************************************


LPARAMETERS tcRoot
LOCAL ARRAY laDirs[1]
LOCAL lcRoot, lcOrigDir, lnDirs, lnCnt, lcDir, lcList
*** We definitely need a root directory
IF EMPTY( tcRoot ) OR NOT DIRECTORY( tcRoot )
  lcRoot = GETDIR( CURDIR(), "Must specify a Root Directory", "Get SubDirs" )
  IF EMPTY(lcRoot)
    lcRoot = FULLPATH( CURDIR())
  ENDIF
ELSE
  lcRoot = FULLPATH( tcRoot )
ENDIF

*** Save the original location
lcOrigDir = FULLPATH( CURDIR() )

*** Switch to the specified directory
SET DEFAULT TO (lcRoot)

*** Now get a list of 1st level Sub_directories
lnDirs = ADIR( laDirs, '*.', 'D' )
IF lnDirs = 0
  SET DEFAULT TO (lcOrigDir)
  RETURN ""
ENDIF
*** We have at least one sub-directory 
lcList = ''
FOR lnCnt = 1 TO lnDirs
  *** Ignore "." and ".." entries
  lcDir = LOWER( ALLTRIM( CHRTRAN( laDirs[lnCnt, 1], '.', '')))
  IF EMPTY( lcDir )
    LOOP
  ENDIF
  *** Add the directory to the list
  lcList = lcList + IIF( EMPTY( lcList ), '', ',' ) + lcDir
NEXT


*** Copy results to the clipboard and return the list
SET DEFAULT TO (lcOrigDir)
RETURN lcList

4 楼

zxl931:
我主要请您指教一下上述几个不懂的地方。有空吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册