ADIR()用法初探
(如何取得某个文件的大小、修改日期与属性
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()可以达到很多目的,具体使用请看查看帮助
在VF中直接调出中文输入法
(其实很简单,就用一个函数就行了,但一直没用过
=IMESTATUS(1)  打开或关闭 IME (输入法编辑器)窗口或返回当前的 IME 状态
 
0
关闭 IME 窗口。
1
打开 IME 窗口。
在VF中如何加密数据库文件
加密思路:数据库文件结构分为三部分:文件头部分、字段描述和记录部分。文件头部分的第一个字节是chr(3),这样,就可以修改文件的第一个字节,使正常打开的方式不能浏览文件。
  =FWRITE(hle,iif(fbyte==chr(3),chr(0),chr(26))) 
&&假如第一个字节是chr(3)则用chr(0),否则用chr(26)写入。使用时要用到操作低级文件的几个函数。
有关操作文本文件的一些问题
在VF中,有时需要把表内容转换成.txt文件,以前对这方面内容不够重视,没有很好的学习,现整理一下:
1 库文件复制为标准格式的数据文件
copy sdf next ... for ...  while ...  fields ...
2文本数据文件复制到在DBF文件
  用法和copy to 一样
3几个打开TXT文件的函数
dd=fcreat('路径+文件名',n)  dd为打开文件的句柄,n为0时(默认),可读写文件,为1时只读,为2时隐藏
当一个文件已存在时,则会导致原文件内容丢失,为避免,应用file()函数来测试文件是否存在
dd=fopen(路径+文件名',n)  n为0时只读(默认),为1时只写,为2时可读和写
=feof(dd)      判断是否在文件头
=fflush(dd)    更新并保存文件 将在缓冲区内打开的文件数据写入磁盘。并释放内存
=filetostr('路径+文件名')  将文件内容返回为一串字符
=fputs(dd,内容,写入符数)  写入字符,并在字符串的后面自动写入回车符与换行符chr(10)
=fwrite(dd,内容,写入符数)  写入字符,该函数适用于非文本文件和二进制文件。
fread(dd,读取的字节数)
fget(dd,读取的字节数)  默认最多可返回254个字节,但是,该函数遇回车符chr(13)时,将停止读取
=fseek(dd,字节数1,移到到位置n)  字节数为正时向文件尾移动,n为0表示文件头(默认),为1表示文件指针当前位
置,为2表示文件尾。=seek(dd,0,0)表示移动到文件头。=seek(dd,0,2)可返回文件的总字节数。=fseek(dd,0,1)返回文
件指针的当前位置。 =fseek(dd,10,1)将文件指针从当前位置向后移动10个字节。
ferror() 取得低级文件执行的错误码错误号 错误原因  如果低级文件函数执行成功,则 FERROR( ) 函数返回 0;如
果函数执行不成功,此函数返回一个正值。下列出了 FERROR( ) 函数返回的各个错误编号与错误原因 2文件没有
到      4 打开的文件太多(文件句柄不够)        5 不能访问            6给出的文件句柄无效            8内存不足        25移动
文件指针时出错(无法将指针移到文件开始位置之前)        29磁盘已满        31 打开文件时出错

  VFP数据表加密解密程序
数据表加密解密程序
此程序在VPF6中通过并且无论经过多少次加密都一次解出
加密程序
newname="mmsd.dbf"
dbf_f_name=UPPER(ALLTRIM(newname)) && 文件名处理(变成大写)
hhandle=FOPEN(dbf_f_name,2) && 打开文件或通信端口,供低级文件函数使用
IF hhandle>0 &&如果fopen()打开文件,返回一个大于零的值
  fbyte=FREAD(hhandle,1)  && 读一个字节
  =FSEEK(hhandle,0)  && 将句柄移到头(在低级文件函数打开的文件中移动文件指针)
  =FWRITE(hhandle,IIF(fbyte==CHR(48),CHR(0),CHR(0))) &&改变数据库的关键命令
    ***向低级文件函数打开的文件或通信端口写入字符串
  =FCLOSE(hhandle) &&刷新并关闭低级文件函数打开的文件或通信端口
  ?hhandle
ENDIF hhandle>0
RETURN
解密程序如下
newname="mmsd.dbf" 
dbf_f_name=UPPER(ALLTRIM(newname)) && 文件名处理(变成大写)
hhandle=FOPEN(dbf_f_name,2) && 打开文件或通信端口,供低级文件函数使用
IF hhandle>0 && 打开文件或通信端口,供低级文件函数使用
  fbyte=FREAD(hhandle,1) && 读一个字节
  =FSEEK(hhandle,0) && 将句柄移到头(在低级文件函数打开的文件中移动文件指针)
  IF fbyte=CHR(0) .OR. fbyte=CHR(26)
      =FWRITE(hhandle,IIF(fbyte==CHR(0),CHR(48),CHR(48)))
  ENDIF
ENDIF
=FCLOSE(hhandle)
RETURN
 
JUSTDRIVE( ) 函数    从完整路径中返回驱动器的字母
JUSTEXT( ) 函数      从完整路径中返回文件扩展名的字符。
JUSTFNAME( ) 函数    从完整的路径和文件名中返回文件名部分
JUSTPATH( ) 函数      从包括完整路径和文件名中返回路径名。
JUSTSTEM( ) 函数      从包含完整路径和文件名中返回文件根名(扩展名前的文件名)。
有关操作文本文件的一些问题
在VF中,有时需要把表内容转换成.txt文件,以前对这方面内容不够重视,没有很好的学习,现整理一下:
1 库文件复制为标准格式的数据文件
copy sdf next ... for ...  while ...  fields ...
2文本数据文件复制到在DBF文件
  用法和copy to 一样
3几个打开TXT文件的函数
dd=fcreat('路径+文件名',n)  dd为打开文件的句柄,n为0时(默认),可读写文件,为1时只读,为2时隐藏
当一个文件已存在时,则会导致原文件内容丢失,为避免,应用file()函数来测试文件是否存在
dd=fopen(路径+文件名',n)  n为0时只读(默认),为1时只写,为2时可读和写
=feof(dd)      判断是否在文件头
=fflush(dd)    更新并保存文件 将在缓冲区内打开的文件数据写入磁盘。并释放内存
=filetostr('路径+文件名')  将文件内容返回为一串字符
=fputs(dd,内容,写入符数)  写入字符,并在字符串的后面自动写入回车符与换行符chr(10)
fread和fwrite的区别=fwrite(dd,内容,写入符数)  写入字符,该函数适用于非文本文件和二进制文件。
fread(dd,读取的字节数)
fget(dd,读取的字节数)  默认最多可返回254个字节,但是,该函数遇回车符chr(13)时,将停止读取