利用NUL及FILE()控制驱动器符的输入

Author: 何正峰 Date: 1997-01-01

  在数据库程序设计中,有时需要知道系统实际可接受多少个驱动器或判断用户输入的驱动器符是否有效。如:给出一个驱动器列表,由用户来选择所要操作的驱动器;或者在程序运行中由用户从键盘输入驱动符,紧接着判断用户输入的字符是否为有效的驱动器符。
  大家都知道:NUL是DOS预留的文件名,上面所提到的各种数据库管理系统都有FILE()函数,其作用是:如果文件存在,则FILE()返回逻辑真值,否则,返回假值。因此根据FILE()返回某字母所代表的驱动器真值,否则,返回假值。因此根据FILE()返回某字母所代表的驱动器符下的NUL文件的真假,得知该字母是否为有效的驱动器符。
  例1:确保用户输入有效的驱动器符:
  clear
  set talk off(编译型数据库不要此行)
  do while .t
    accept“输入驱动器符(A,B,C等):”to driver
    if file(drive+':\nul')
      exit
   else
      @10,10 say“无效的驱动器符”
      ?? chr(7)
      key=inkdy(2)
      loop
    endif
  enddo
  return
  例2:给出驱动器的列表。
    clear
  set talk off (编译型数据库不要此行)
  @10,10 say “有效驱动器符为:”
  if file(“A:\NUL:”)  判断是否有驱动器A:
   ?? “A:”
  endif
  if file(“B:\NUL”)
    ?? “B:”   判断是否有驱动器B: 
  endif
  n=0
  do while .t.
    driver=chr(ASC(“C”)+n)+“:\NUL”
    if file(drive)
      ?? chr (asc(“C”)+n)+“:”   判断是否有驱动器C:,D:,E:……等
      n=n+1
   else
     exit
   endif
  enddo
  return
  注:运行此例程时,若有软驱或光驱,请先将驱动器中放入盘片。
  以上例程对于有ramdrive.sys及subst.exe等设置成的虚拟驱动器也能很好的认可,并在多种机器及以上数据库管理系统中通过。