如何让Foxpro生成带命令行参数的EXE文件

Author: 张庆 Date: 1997-01-01

  怎样让Foxpro编译、链接生成的EXE文件带命令行参数,在一般的参考书中未见介绍。本人经过摸索,寻找出两种方法,供读者朋友借鉴。
#2  一、利用DOS的环境变量向Foxpro生成的EXE文件传递参数。
  我们知道,Foxpro的函数Getenv()用来获取在DOS下定义的某环境变量的值。利用这一点,我们在DOS下将Foxpro需要的命令行参数先赋给某DOS环境变量(不要与DOS系统自用的Path、Temp、Comspec、Prompt等重名),然后在Foxpro生成的EXE文件中通过Getenv()函数获取参数的值即可。后附程序一Setpara.bat首先设置环境变量V1和V2,程序二Getpara.prg检测这两个参数的值。读者可将Getpara.prg用Foxpro编译后验证此程序。用Setpara.bat程序启动,如:C:\FOX>Setpara p1 P2,屏幕显示:
  命令行参数1=p1
  命令行参数2=P2
#2  程序一:
  Setpara.bat:
  @echo off
  set v1=%1
  set v2=%2
  getpara.exe
  rem Rlease V1,V2
  set v1=
  set v2=
#2  程序二:
  Getpara.prg:
  set talk off
  cmdpara1=getenv("v1")
  cmdpara2=getenv("v2")
  @10,10 SAY "命令行参数1="+cmdpara1
  @12,10 SAY "命令行参数2="+cmdpara2
  @14,10 say "Press a key Go on."
  ink=inkey(0)
  return
#2  二、其实,Foxpro的.prg命令文件本身就可获得父进程传递的参数,当上级调用者为DOS时,这个特征照样有效,只是在参数传递形式上稍有不同。如程序三Getpara2.prg,经过编译链接后在DOS下运行:
  C:\FOX>getpara2 Para1 para2
  屏幕显示:
  参数1=Para1
  参数2=para2
#2  程序三:
  Getpara2.prg:
  para v1,v2
  set talk off
  ?"参数1=",v1
  ?"参数2=",v2
  ink=inkey(0)
  return
#3  注意,
  以上二、三程序如果在Foxpro集成环境下运行,要用不同的形式,如程序三在Foxpro命令窗口中须以
  Do getpara2 with Para1 Para2
  的形式运行。
  以上程序在COMPAQ presario 460型486SX/66机器上,Foxpro 2.5 for DOS环境下运行通过。