E X T E R N A L 命 令
向项目管理器提示一个未定义的引用
语 法
EXTERNAL FILE FileList | ARRAY ArrayList
| CLASS | FORM | LABEL | LIBRARY | MENU
| PROCEDURE | QUERY | REPORT | SCREEN | TABLE
参 数 描 述
FILE FileList
告 知 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 诸 如 文 本 文
件 .B M P 位 图 文 件 等 等 是 独 立 文 件 FileList 可 以 包 含 一 系 列 文 件 文 件名 之 间 用 逗 号 分 隔
A R R A Y ArrayList
在 程 序 中 创 建 了 某 个 数 组 然 后 要 在 低 一 层 的 程 序 中 使 用 此 数 组 时 应 在 这个 低 层 程 序 中 包 含 A R R A Y 子 句 和 该 数 组 名 ArrayList 可 以 包 含 一 系 列 数 组名 数 组 名 之 间 用 逗 号 分 隔
下 面 的 示 例 中 第 一 个 程 序 创 建 了 数 组 gaInvoice 初 始 化 该 数 组 并 调 用 低级 程 序 dispinvo dispinvo 显 示 在 高 级 程 序 中 创 建 的 数 组 的 内 容 包 含EXTERNAL ARRAY GAINVOICE 命 令 以 警 告 项 目 管 理 器
DIMENSION gaInvoice(4) STORE 'Paid' TO gaInvoice DO dispinvo
*** dispinvo 程 序 *** PROCEDURE dispinvo EXTERNAL ARRAY gaInvoice
? gaInvoice(1)
? gaInvoice(2)
? gaInvoice(3)
? gaInvoice(4) RETURN
***dispinvo 程序结束 ***
当 向 一 个 自 定 义 函 数 或 过 程 传 递 一 个 数 组 时 自 定 义 函 数 或 过 程 中 相 应 的 数组 在 项 目 管 理 器 中 必 须 是 同 一 的 包 含 ARRAY 选 项 时 需 要 使 用PARAMETER 语 句 中 的 数 组 名
DIMENSION gaArrayOne(2) && 建立一个数组
EXTERNAL ARRAY gaArrayTwo && 用于 UDF 中的数组名称
SET TALK OFF
STORE 10 TO gaArrayOne(1) STORE 2 TO gaArrayOne(2)
= ADDTWO(@gaArrayOne) && 通过 UDF 的指示传递数组
FUNCTION ADDTWO
PARAMETER gaArrayTwo CLEAR
gaArrayTwo(1) = gaArrayTwo(1) + 2 gaArrayTwo(2) = gaArrayTwo(2) + 2
? gaArrayTwo(1)
? gaArrayTwo(2)
CLASS
告 知 项 目 管 理 器 包 含 在 一 个 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 可 视 类库
EXTERNAL CLASS myvclass && 类 myvclass 必须存在
STORE 'myvclass' TO gcClassFile
MODIFY CLASS (gcClassFile)
FORM
如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 表 单 定 义 文 件 应 包 含 F O R M 子 句 及 该表 单 文 件 名 FORM 子 句 与 SCREEN 子 句 等 价 .
EXTERNAL FORM dataentr && 表单文件 dataentr 必须存在
STORE 'dataentr' TO gcFormFile DO FORM (gcFormFile)
LABEL
告 知 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 标 签 定 义 文件
EXTERNAL LABEL Maillabl && 标签文件 Maillabel 必须存在
STORE 'Maillabl' TO gcLabelFile LABEL FORM (gcLabelFile) PREVIEW
LIBRARY
当 在 SET LIBRARY 命 令 中 通 过 间 接 文 件 引 用 或 宏 替 换 引 用 某 个 库 文 件 时应 包 含 LIBRARY 子 句
EXTERNAL LIBRARY regress && 库文件 regress 必须存在
STORE 'regress' TO gcStatFunc SET LIBRARY TO (gcStatFunc)
M E N U
如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 有 菜 单 定 义 文 件 时 应 包 含 M E N U 子句 及 菜 单 文 件 名
EXTERNAL MENU pickfile && 菜单文件 Pickfile 必 须存在
STORE 'pickfile' TO gcSysMenPad MODIFY MENU (gcSysMenPad)
PROCEDURE
标 识 一 个 外 部 过 程 或 用 户 自 定 义 函 数
EXTERNAL PROCEDURE delblank && 过程 delblank 必 须存在
STORE 'delblank' TO gcTrimBlanks DO (gcTrimBlanks) WITH 'A B C D E'
QUERY
提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 查 询 文 件
EXTERNAL QUERY sales && 查询文件 sales 必须存在
STORE 'sales.qpr' TO gcSalesFile DO (gcSalesFile)
REPORT
提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 报 表 定 义 文 件
EXTERNAL REPORT overdue && 报表文件 overdue 必 须存在
STORE 'overdue' TO gcReportFile REPORT FORM (gcReportFile) PREVIEW
SCREEN
如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 有 表 单 定 义 文 件 则 应 包 含 SCREEN 子句 及 表 单 文 件 名 SCREEN 子 句 与 F O R M 子 句 等 价
EXTERNAL SCREEN dataentr && 表单文件 dataentr 必须 存在
STORE 'dataentr' TO gcScreenFile MODIFY SCREEN (gcScreenFile)
TABLE
提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 V isual FoxPro 的 一个 表
EXTERNAL TABLE customer && 表 cu stomer 必 须存在
STORE 'customer' TO gcMyTable USE (gcMyTable)
说 明
使用 EXTERNAL 命令 可以在项目管理器创建的项目中包含文件并解决未定义引用
的问题 只有项目管理器才使用 EXTERNAL 命令 在程序的执行中忽略此命令
有关 用项目管理器创建项目 的详细内容 请 参 阅 Microsoft Visual FoxPro 6.0 中文版程序员指南 第十 三 章 编译 应用程序
项目管理器将 EXTERNAL 命令中指定的文件包含在项目中 在文件名前应加入
CLASS FILE FORM LABEL LIBRARY MENU PROCEDURE QUERY
REPORT SCREEN 或 TABLE 以告知项目管理器要包含在项目中的文件类型
当在名称表达式或宏替换中包含文件名时 也应给项目管理器以提示 这可以保证在项目连编时包含所有必要的文件 另外 在其他过程或用户自定义函数中创建的数组也必须提示给项目管理器
有关名称表达式和宏替换的详细内容 请参阅 & 命令 只要可能 就应使用名称表达式 而不要使用宏替换 这有助于提高程序的性能
请 参 阅
BUILD APP, BUILD PROJECT