天天酷跑放烟花全抽:VFP高手来一下

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 06:50:11
VFP参数传递的主式有两种:一种是按值传递;另一种是按引用传递,两种传递的语句分别是什么?回答正确送分.

SET UDFPARMS TO VALUE 按值传递
SET UDFPARMS TO REFERENCE 按引用传递

请按以下步骤完成:
在命令窗口输入命令:MODIFY FORM form1,打开表单 form1.scx。
双击表单中的“刷新标题”命令按钮,进入命令按钮的事件编辑窗口,在Click事件中的程序段入下:
*******“刷新标题”命令按钮Click事件的源程序*******
ThisForm.标题=“商品销售数据输入“
****************************************************
修改命令按钮中的程序错误,正确的命令如下:
*****“刷新标题“命令按钮Click事件修正后的程序*****
ThisForm.Caption=“商品销售数据输入” && 属性名错误
****************************************************
以同样的方法修改“商品销售输入”和“输出销售报表”命令按钮中的程序错误:
*****“商品销售输入”命令按钮CLICK事件的源程序*****
DO sellcomm
****************************************************
修改命令按钮中的程序错误,正确的命令如下:
****“商品销售输入”“命令按钮Click事件修正后的程序****
DO FORM sellcomm.SCX && 运行表单命令错误
****************************************************
******“输出销售报表”命令按钮Click事件的源程序******
DO print1 TO PREVIEW
****************************************************
修改命令按钮中的程序错误,正确的命令如下:
****“输出销售报表”命令按钮Click事件修正后的程序****
PEPORT FORM print1 PREVIEW && 语法错误
****************************************************
保存程序修改,退出表单设计器。

set udfparms 命令

Visual FoxPro 在向用户自定义函数 (UDF) 传递参数时,指定为按值传递还是通过引用传递。

语法

SET UDFPARMS TO VALUE | REFERENCE

参数
TO VALUE

向一个用户自定义函数按值传递一个变量。当按值传递变量时,在用户自定义函数中可以更改变量的值,但调用程序中变量的原值不变。

TO REFERENCE

向一个用户自定义函数通过引用传递一个变量。当通过引用传递变量时,如果在用户自定义函数中更改了变量的值,则调用程序中变量的原值也随之更改。

说明

默认情况下,变量以值传递方式传递给用户自定义函数(用 DO ... WITH 传递给过程的变量为通过引用传递)。
不管 SET UDFPARMS 如何设置,可以强制设定以值传递方式或引用传递方式向一个 UDF 传递参数:如果用括号括起一个变量,则设定按值传递;在一个变量前加 @ 符号,可以设定以引用传递方式传递。

提示
可以把整个数组传递给一个过程或用户自定义函数。如果使用 SET UDFPARMS TO REFERENCE 命令,或者在数组名前加 @,就可以传递整个数组;如果使用 SET UDFPARMS TO VALUE 命令,或者用括号把数组名括起来,可以按值传递数组的第一个元素。数组元素总是按值传递。

set udfparms 命令示例
下面的示例展示了按值传递和引用传递变量的区别。

*** 按值传递内存变量***
clear
set talk off
wait 'press a key to pass by value' window
set udfparms to value
store 1 to gnx

*** gnx 的值没有更改***
@ 2,2 say 'udf value: ' + str(plusone(gnx))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 通过引用传递内存变量***
wait 'press a key to pass by reference' window
clear
set udfparms to reference
store 1 to gnx
*** gnx 的值改变了***
@ 2,2 say 'udf value: ' + str(plusone(gnx))
@ 4,2 say 'value of x: ' + str(gnx)
set udfparms to value

***这个 udf 给一个数加1 ***
function plusone
parameter gnz

gnz = gnz + 1
return gnz
*** udf 结束 ***

下面的示例和上面的一样,只是分别用括号和 @ 来表示按值和通过引用传递变量:

*** 按值传递内存变量***
clear
set talk off
wait 'press a key to pass by value' window
store 1 to gnx
@ 2,2 say 'udf value: ' + str(plusone((gnx)))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 通过引用传递内存变量 ***
wait 'press a key to pass by reference' window
clear
store 1 to gnx
@ 2,2 say 'udf value: ' + str(plusone(@gnx))
@ 4,2 say 'value of gnx: ' + str(gnx)

*** 这个 udf 给一个数加 1***
function plusone
parameter gnz
gnz = gnz + 1
return gnz
*** 结束***