正文

个老问题:搜索文件(包含子目录名) 2005-09-26 13:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5351.html

分享到:

一个老问题:搜索文件(包含子目录名)      '这个问题我在论坛发过帖子'现在这个帖子找不到了'这是重新优化过的过程'CALL absolute 过程是由QB45提供的'这个过程能够搜索到当前路径下的所有文件名及子目录名(不管文件什么属性)'如果在根目录,也能够获得分区的卷标名DEFINT A-ZFUNCTION Dirs$ (Path AS STRING, Attr AS INTEGER, Size as LONG)'******************************************************'  搜索目录下的所有文件和文件夹,适用7.1和4.5版本'  Attr位 8=卷标 16=目录 其他为文件'  第一次调用时Path为要搜索的路径,第二次调用时Path请置空'  返回:Attr=文件属性  Size=文件长度'******************************************************STATIC Lc AS INTEGERSTATIC ErrCode AS INTEGERSTATIC FileDATA AS STRING * 44STATIC FirstCode AS STRING * 28STATIC NextCode AS STRING * 18STATIC FileName AS STRING * 64IF Lc = 0 THEN      Lc = 1      DIM AsmCode AS STRING * 12      '=================================================================      MID$(AsmCode, 1, 3) = CHR$(&H68) + MKI$(VARSEG(FileDATA))      MID$(AsmCode, 4, 1) = CHR$(&H1F)      MID$(AsmCode, 5, 3) = CHR$(&HBA) + MKI$(VARPTR(FileDATA))      MID$(AsmCode, 8, 2) = CHR$(&HB4) + CHR$(&H1A)      MID$(AsmCode, 10, 2) = CHR$(&HCD) + CHR$(&H21)      MID$(AsmCode, 12, 1) = CHR$(&HCB)      '=================================================================         DEF SEG = VARSEG(AsmCode): CALL ABSOLUTE(VARPTR(AsmCode)): DEF SEG      '=================================================================      MID$(FirstCode, 4, 1) = CHR$(&H1F)      MID$(FirstCode, 8, 3) = CHR$(&HB8) + CHR$(&H0) + CHR$(&H4E)      MID$(FirstCode, 11, 3) = CHR$(&HB9) + MKI$(255)      MID$(FirstCode, 14, 2) = CHR$(&HCD) + CHR$(&H21)      MID$(FirstCode, 16, 3) = CHR$(&H68) + MKI$(VARSEG(ErrCode))      MID$(FirstCode, 19, 1) = CHR$(&H1F)      MID$(FirstCode, 20, 2) = CHR$(&H72) + CHR$(&H2)      MID$(FirstCode, 22, 2) = CHR$(&H33) + CHR$(&HC0)      MID$(FirstCode, 24, 1) = CHR$(&H3E)      MID$(FirstCode, 25, 3) = CHR$(&HA3) + MKI$(VARPTR(ErrCode))      MID$(FirstCode, 28, 1) = CHR$(&HCB)            '=================================================================      MID$(NextCode, 1, 3) = CHR$(&HB8) + CHR$(&H0) + CHR$(&H4F)      MID$(NextCode, 4, 2) = CHR$(&HCD) + CHR$(&H21)      MID$(NextCode, 6, 3) = CHR$(&H68) + MKI$(VARSEG(ErrCode))      MID$(NextCode, 9, 1) = CHR$(&H1F)      MID$(NextCode, 10, 2) = CHR$(&H72) + CHR$(&H2)      MID$(NextCode, 12, 2) = CHR$(&H33) + CHR$(&HC0)      MID$(NextCode, 14, 1) = CHR$(&H3E)      MID$(NextCode, 15, 3) = CHR$(&HA3) + MKI$(VARPTR(ErrCode))      MID$(NextCode, 18, 1) = CHR$(&HCB)      '=================================================================END IFIF Path$ <> "" THEN      FileName = Path + CHR$(0)      MID$(FirstCode, 1, 3) = CHR$(&H68) + MKI$(VARSEG(FileName))      MID$(FirstCode, 5, 3) = CHR$(&HBA) + MKI$(VARPTR(FileName))      DEF SEG = VARSEG(FirstCode)      CALL ABSOLUTE(VARPTR(FirstCode)): DEF SEG      IF ErrCode THEN EXIT FUNCTIONELSE      DEF SEG = VARSEG(NextCode)      CALL ABSOLUTE(VARPTR(NextCode)): DEF SEG      IF ErrCode THEN EXIT FUNCTIONEND IFFile$ = MID$(FileDATA, 31)Dirs$ = LEFT$(File$, INSTR(File$, CHR$(0)) - 1)Attr% = ASC(MID$(FileDATA, 22, 1))Size& = CVL(MID$(FileDATA, 27, 4))END FUNCTION 

阅读(7785) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册