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秒。 ......

评论