Show/Hide Toolbars

XSharp

注意此命令在 Core 和 Vulcan 方言中不可用。
Note该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。

用途

重新创建之前保存到文件中的公有变量和私有变量,并用它们之前的值进行初始化。

语法

RESTORE FROM <xcSourceFile> [ADDITIVE]

参数

<xcSourceFile>内存文件的名称(例如用 SAVE 创建的文件),包括可选的驱动器、目录和扩展名。 有关文件搜索和创建规则,请参阅 SetDefault() 和 SetPath()。 默认扩展名为 .MEM。
 
此命令尝试以共享模式打开 <xcSourceFile>。 如果文件不存在,将出现运行时错误。 如果文件成功打开,则继续执行操作。 如果由于其他进程独占该文件等原因而拒绝访问,NetErr() 将被设置为 TRUE。

 

ADDITIVE将从内存文件加载的内存变量添加到现有内存变量池中。

描述

变量的作用域不会随变量一起保存,而是在恢复变量时建立。 数组和已声明变量不能被保存或还原。

 

恢复内存变量时,它们将作为私有变量重新创建,并与当前过程或函数的作用域保持一致,除非它们作为公有变量存在并指定了 ADDITIVE 子句。 如果指定了 ADDITIVE 子句,除非使用 PRIVATE 隐藏,否则同名的公有变量和私有变量会被覆盖。 如果未指定 ADDITIVE 子句,则在加载内存文件之前,所有公有变量和私有变量都会被释放。

 

恢复保存在 CLIPPER 程序中的变量时,变量名将被截断为 10 个字符。 这是因为 CLIPPER 只识别前 10 个字符,并只使用这些字符生成 .MEM 文件。 而 XSharp 则支持所有字符。 例如,在 CLIPPER 中,两个变量名 ThisIsALongVariable 和 ThisIsALon 指的是同一个变量;而在 XSharp 中,情况并非如此。

 

注意:已声明的变量不受 RESTORE 命令的影响。 如果在当前例程中声明了一个变量,并且恢复了一个同名变量,那么只有声明的变量可见,除非在引用恢复的变量前使用 _MEMVAR-> 别名。

示例

本例演示了 SAVE 和 RESTORE 的典型应用。 这里使用 SAVE TO 和 RESTORE FROM 创建了包含屏幕的内存变量:

// 创建并使用屏幕伪数组
SAVE SCREEN TO cScreen1
SAVE ALL LIKE cScreen* TO Screens
 
<Statements>...
 
RESTORE FROM Screens ADDITIVE
nNumber = "1"
RESTORE SCREEN FROM ("cScreen" + nNumber)

程序集

XSharp.RT.DLL

参见

LOCAL, PRIVATE, PUBLIC, SAVE, SetDefault(), SetPath()