正文

VFP系统命令和函数的运用技巧(1)(转)2006-05-07 12:59:00

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

分享到:

 Vfp为我们提供了非常丰富的命令和函数,在Vfp中编程应尽量用Vfp身的命令或函数,只有实在没办法时才考虑用WIN32API外部连接库。1.如何取得系统目录nPath_ls=fullpath('command.com',2)nPath=strtran(nPath_ls,'COMMAND.COM','')  &&取得Windows\的目录名*如果想得到SYSTEM目录则:nPath=strtran(nPath_ls,'COMMAND.COM','system\') &&取得Windows\system\的目录名 当然下面的代码更简单:mWinPath=getenv("windir")  &&取得Windows\的目录名2.如何取得运行程序的盘符和当前目录Dqml=sys(5)+sys(2003)+'\' 3.如何取得某个文件的大小、修改日期及属性 Vfp为我们提供了一个非常强大函数ADIR(), 语法: ADIR(ArrayName [, cFileSkeleton [, cAttribute [, cCreatorType]]])使用:X=Adir(Myml,'C:\TEMP\*.DBF')返回:X=符合cFileSkeleton条件的文件或目录个数 Myml=一个有五列内容的数组。这五列的含义是:1 文件名  字符型 2 文件大小 数值型 3 文件日期 日期型 4 文件时间 字符型 5 文件属性 字符型 例:我们想得到某个文件的大小或文件修改日期及属性:X=Adir(Myml,'C:\TEMP\abc.DBF')IF X#0  wjsize=Myml(1,2) &&取得文件大小  wjdate=Myml(1,3) &&取得修改日期及属性   wjAttr=Myml(1,5) &&取得文件属性ELSE  wait wind '没有您指定的文件'ENDI 文件属性的含义:A 档案文件 一 可读写 H 隐藏文件 R 只读文件 S 系统文件D 目录或文件夹 我们利用Adir()还可以检查某个目录是否存在:X=Adir(Myml,'C:\ABCDE','D') IF X=0   wait wind '该目录不存在...'ENDI 当然用下面的更简单:if ! file('C:\ABCDE\nul')   wait wind '该目录不存在...'endi 总之Adir()可以达到很多目的,具体使用请看查看帮助。4.如何检查某磁盘是否存在 if ! file('a:\nul')   wait wind 'A盘没准备好!...'endi 5.如何删除只读属性的文件   Vfp没有提供改变文件属性的命令或函数,在Vfp代码中无法删除只读属性的文件,我发现可以利用Rename命令来解决。如c:\temp\XX1.DAT是一个只读属性的文件。Rename c:\temp\XX1.DAT TO C:\RECYCLED\XX1.DAT *将XX1.DAT文件改名到RECYCLED[回收站],就等于删除了该文件。 VFP下的Rename命令当TO后面的文件夹与前面的不一致时,相当于资源管理器里的剪切命令,这是不是也是BUG呢?6.如何改变文件的属性 Vfp没有提供改变文件的属性的命令或函数,要想改变文件的属性必须转个弯,先把原文件改名,再拷贝回一个然后再删除就到达了目的, 如有一文件:XX1.DAT是只读属性的文件,不改属性无法往文件里写新内容。Rename c:\temp\XX1.DAT TO C:\temp\XX1.DDD    &&先改名Copy file C:\temp\XX1.DDD to C:\temp\XX1.DAT  &&再拷贝Rename c:\temp\XX1.DDD TO C:\RECYCLED\XX1.DAT  &&再删除 这样新拷贝的XX1.DAT就是解除了只读属性的文件了。 7.Wait命令的应用     Wait命令应用很方便,我在VB,DELPHI等语言中就始终没有找到与其功能 相似的语句,可是我们在VFP中使用时常常只是用到了它的部分功能,而忽略了 一些很有用的功能。 Wait命令也有不少子句:WAIT  [cMessageText]   [TO MemVarName]   [WINDOW [AT nRow, nColumn]]   [NOWAIT]   [CLEAR | NOCLEAR]   [TIMEOUT nSeconds]比如我们的使用常常只是:WAIT WIND '暂停...' 使'暂停...'这两个字停留在其默认窗口的右上角,其实完全可以用 [AT nRow, nColumn]来改变其停留位置:WAIT WIND '暂停...' AT 10,30 使'暂停...'停留在指定的第10行,第30列上。 WAIT WIND '暂停...' +CHR(13)+'另起一行...' AT 10,30 在提示信息中加上CHR(13),提示信息可分行显示。 而:WAIT WIND '暂停10秒...' TIMEOUT 10 则可在无击键和鼠标移动的情况下只暂停10秒。 ......

阅读(5351) | 评论(1)


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

评论

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