foxpro中的&代表啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了foxpro中的&代表啥相关的知识,希望对你有一定的参考价值。

num=\'fff\'

fff=0.44

? &num+19.56
结果显示:20
这里的 & 表示 宏替换。
参考技术A

    & 命令


执行宏替换。

语法

& MemVarName [.cExpression]

参数

& MemVarName

指定宏替换中引用的内存变量名或数组元素名。请不要加上用于区分内存变量与字段的前缀 M.,否则将产生语法错误。宏的长度不要超过 Visual FoxPro 中允许的最大语句长度。

在宏替换中,变量不能递归引用其自身。例如,下列语句将产生错误信息:

STORE '&gcX' TO gcX

? &gcX

出现在 DO WHILE、FOR 和 SCAN 中的宏替换语句只在循环开始时计算值,在后续的循环中则不再计算值。因此在循环内改变内存变量和数组元素的值对宏替换都无效。

.cExpression

句点分隔符 (.) 和 cExpression 选项可用来在宏后面追加额外的字符。使用 .cExpression 附加在宏后面的 cExpression 也可以是一个宏。

说明

宏替换把内存变量和数组元素中的内容当作原义字符串。当连字符 (&) 位于字符型内存变量或数组元素前面时,内存变量和数组元素的内容将替代宏引用。宏替代可用在任何接受原义字符串的命令和函数中。

提示

请尽可能使用名称表达式来取代宏替换。名称表达式与宏替换作用相似,但是,名称表达式限于传递作为名称的字符串。当命令或函数接受名称(文件名、窗口名、菜单名等)时,使用名称表达式的处理速度要明显快得多。有关名称表达式的详细内容,请参阅《开发指南》的第二章“语言概述”。

下列代码可以正确执行:

STORE 'customer' TO gcTableName

STORE 'company'  TO gcTagName

USE &gcTableName ORDER &gcTagName

但是可以使用名称表达式代替:

USE (gcTableName) ORDER (gcTagName)

宏替换对于替换命令中的关键字是很有用的。在下面的示例中,把 TALK 设置保存在内存变量中,以便后面的程序能够恢复它。TALK 的原始设置使用宏替换恢复。


    示例


STORE SET(\'TALK\') TO gcSaveTalk
SET TALK OFF
*
* 其他程序代码
*
SET TALK &gcSaveTalk && Restore original TALK setting

追问

我直接问道题吧,就这个题麻烦给解释一下吧
在当前命令窗口中已经定义了一个字符串变量,请将该变量中的数值与19.56相加,并得出结果。
?&num+19.56 回车
这里这个&是什么意思?
谢谢

追答

你的问题lnxcmy回答的很好的。

& 的用法示例代码是一个很标准的应用。有时用 & 可以解决很多的问题。例如:一个文件中存了很多的数据,我想统计每个数据出现的次数,可参照以下程序:

参考技术B 执行巨集替换

MSDN 文档中的 OpenInputDesktop 究竟代表啥?

【中文标题】MSDN 文档中的 OpenInputDesktop 究竟代表啥?【英文标题】:What does OpenInputDesktop in MSDN documentation stand for exactly?MSDN 文档中的 OpenInputDesktop 究竟代表什么? 【发布时间】:2015-09-28 15:48:44 【问题描述】:

我正在浏览DesktopDuplication API Sample Code,其中有很多功能我不清楚它们的确切设备和参数是什么。其中之一是OpenInputDesktop。

这是 DesktopDuplication API 示例代码中如何使用此函数的代码 sn-p。

// Get desktop
    DUPL_RETURN Ret;
    HDESK CurrentDesktop = nullptr;
    CurrentDesktop = OpenInputDesktop(0, FALSE, GENERIC_ALL);

所以我的问题是,这里的桌面到底是什么意思?

如果我有一个多显示器系统,主桌面:1366X768 和 1920X1080 的辅助桌面,那么桌面是指仅主桌面的桌面区域:1366X768 还是桌面是指 (1920+1366)3286X1080 的整个屏幕区域?

或者我们是否可以在函数调用中选择上述两个桌面定义之一。但是我找不到任何可以更改的参数。

更新 我提到了Window Station and Desktop Creation 和Desktop 和Window Stations 但是我还没有找到我的问题的具体答案。 Here in Desktops提到:

这个活动桌面,也称为输入桌面,是当前对用户可见并接收用户输入的桌面。

这是否意味着主监视器?我仍然对桌面和显示器的概念感到困惑

默认情况下,交互式窗口站中有三个桌面:Default、ScreenSaver 和 Winlogon。

这消除了桌面和显示器之间没有关系的疑问。但是,当连接多个显示器时,桌面区域是什么意思?主显示器或组合屏幕空间上的默认/屏幕保护程序是什么?

【问题讨论】:

MSDN 本身可以帮助您:About Window Stations and Desktops 我阅读了您提到的文章以及Window Stations 和Desktops 但是我仍然不清楚我提出的疑问。 @BenVoigt 您的混淆是由于使用“桌面”一词来表示实际上是“显示表面”。当您尝试理解 Windows API 时,您需要使用它的术语,这并不总是等同于非程序员的常用用法。 在 Windows API 中,“桌面”是一个包含在“窗口站”中的对象,它本身是***窗口的容器(所有其他窗口都是间接后代)。它没有尺寸,或类似的东西。它只存在于窗口层次结构中。 @BenVoigt 您能否详细解释一下桌面或“显示表面”与多显示器系统之间的关系?就像在this article about Desktops by MSDN 中提到的那样,交互式窗口站中有三个桌面:Default、ScreenSaver 和 Winlogon。 所以这意味着桌面只与主监视器相关,对吧?并为多显示器系统中的辅助显示器创建了不同的桌面。还是我都搞错了? 【参考方案1】:

我在此链接上找到了我的问题的答案:Virtual Screen。

提及的地方:

所有显示器的边界矩形是虚拟屏幕。桌面覆盖虚拟屏幕而不是单个显示器。

这基本上让我对桌面到底代表什么感到困惑。感谢您的帮助@Ben Voigt

在此链接上:HMonitor and the Device Context 已被提及:

每个物理显示器都由 HMONITOR 类型的监视器句柄表示。只要物理显示器是桌面的一部分,它就具有相同的 HMONITOR。

所以这清除了我关于物理设备、虚拟屏幕以及它们如何与 MSDN 中的监视器和桌面相关的概念。

希望这有助于有人搜索与我相似的答案。

【讨论】:

以上是关于foxpro中的&代表啥的主要内容,如果未能解决你的问题,请参考以下文章

ASP、PHP、CGI、jsP C语言、C++、VB、JAVA、PERL、DELPHI YSQL、SQL、FOXPRO WIN2K、WINNT 是啥意思啊

利用visual foxpro将dbf文件转为excel文件之后 中文部分都是乱码如何解决呢?

使用 Python ctypes 访问 Visual Foxpro COM DLL

用于 FoxPro 的 c++ dll

利用visual foxpro将dbf文件转为excel文件之后 中文部分都是乱码如何解决呢?

Foxpro 复杂子查询