VFP中&是什么意思?

如题所述

VFP中的“&”是宏代换函数。
如:xm="张三"
?,&xm
此时显示结果是: 张三

此宏代换函数的最大作用是在编程时,因一些命令或函数后面不能直接加入的字段、变量等,此时,就用“&”宏代换函数代换以后,就可以加入了。
比如常用的相对路径程序:
PUBLIC LCNowpath
LCNowpath=right(justpath(sys(16)),RAT("\",sys(16))-AT("\",sys(16))+3) && 获取当前路径
SET PATH to &LCNowpath;&LCNowpath\dbf;&LCNowpath\wav &&设置搜索路径
SET DEFAULT TO &LCNowpath &&设置默认路径
另外,&&就是不执行之后内容,通常用作注解。如上行中的 && 获取当前路径、 &&设置搜索路径、 &&设置默认路径 都是注解,不参与程序运行的内容。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-13
执行宏替换。

& VarName[.cExpression]

参数
& VarName
指定宏替换中引用的内存变量名或数组元素名。请不要加上用于区分内存变量与字段的前缀 M.,否则将产生语法错误。宏的长度不要超过 Visual FoxPro 中允许的最大语句长度。
在宏替换中,变量不能递归引用其自身。例如,下列语句将产生错误信息:

STORE '&gcX' TO gcX
? &gcX

出现在 DO WHILE、FOR 和 SCAN 中的宏替换语句只在循环开始时计算值,在后续的循环中则不再计算值。因此在循环内改变内存变量和数组元素的值对宏替换都无效。
[. cExpression]
句点分隔符 (.) 和 cExpression 选项可用来在宏后面追加额外的字符。使用 .cExpression 附加在宏后面的 cExpression 也可以是一个宏。如果 cExpression 是一个属性名, 包括一个额外的点号 (cExpression..PropertyName)。
说明
宏替换把内存变量和数组元素中的内容当作原义字符串。当连字符 (&) 位于字符型内存变量或数组元素前面时,内存变量和数组元素的内容将替代宏引用。宏替代可用在任何接受原义字符串的命令和函数中。

提示:
请尽可能使用名称表达式来取代宏替换。名称表达式与宏替换作用相似,但是,名称表达式限于传递作为名称的字符串。当命令或函数接受名称(文件名、窗口名、菜单名等)时,使用名称表达式的处理速度要明显快得多。有关名称表达式的详细内容,请参阅 名称表达式。

下列代码可以正确执行:
STORE 'customer' TO gcTableName
STORE 'company' TO gcTagName
USE &gcTableName ORDER &gcTagName
但是可以使用名称表达式代替:
USE (gcTableName) ORDER (gcTagName)
宏替换对于替换命令中的关键字是很有用的。在下面的示例中,把 TALK 设置保存在内存变量中,以便后面的程序能够恢复它。TALK 的原始设置使用宏替换恢复。
注意:
当试图在一个字符串中包含两个&符号(&&)时,连接单个&符 (&)可能导致意外的结果。例如,假设您要把字符串 "YYY" 赋值给变量 BBB。 "YYY"是字符串 "AAA&" 和 "&BBB" 的串联,用"YYY"替换"BBB" ,这样的结果并不是 "AAA&&BBB",而是 "AAA&YYY". 更多的信息,请参见 && 命令。
第2个回答  2008-10-23
“!”是从C语系移植来的,我就用“移植”这个词吧,因为首先出现在C语言中,表示“否定”的含义,现在VFP(似乎从5.0开始)也用这个符号表示同样的意思,用在逻辑表达式中,作为逻辑非运算,等效于.NOT.,用在关系运算符中表示“不”,如“!=”等效于“<>”或“#”
相似回答