E X T E R N A L 命 令

E X T E R N A L 命 令 - 图1向项目管理器提示一个未定义的引用

语 法

EXTERNAL FILE FileList | ARRAY ArrayList

| CLASS | FORM | LABEL | LIBRARY | MENU

| PROCEDURE | QUERY | REPORT | SCREEN | TABLE

参 数 描 述

FILE FileList

E X T E R N A L 命 令 - 图2告 知 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 诸 如 文 本 文

E X T E R N A L 命 令 - 图3E X T E R N A L 命 令 - 图4E X T E R N A L 命 令 - 图5E X T E R N A L 命 令 - 图6E X T E R N A L 命 令 - 图7件 .B M P 位 图 文 件 等 等 是 独 立 文 件 FileList 可 以 包 含 一 系 列 文 件 文 件名 之 间 用 逗 号 分 隔

A R R A Y ArrayList

E X T E R N A L 命 令 - 图8E X T E R N A L 命 令 - 图9E X T E R N A L 命 令 - 图10E X T E R N A L 命 令 - 图11E X T E R N A L 命 令 - 图12在 程 序 中 创 建 了 某 个 数 组 然 后 要 在 低 一 层 的 程 序 中 使 用 此 数 组 时 应 在 这个 低 层 程 序 中 包 含 A R R A Y 子 句 和 该 数 组 名 ArrayList 可 以 包 含 一 系 列 数 组名 数 组 名 之 间 用 逗 号 分 隔

E X T E R N A L 命 令 - 图13E X T E R N A L 命 令 - 图14E X T E R N A L 命 令 - 图15E X T E R N A L 命 令 - 图16E X T E R N A L 命 令 - 图17下 面 的 示 例 中 第 一 个 程 序 创 建 了 数 组 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 程序结束 ***

E X T E R N A L 命 令 - 图18E X T E R N A L 命 令 - 图19E X T E R N A L 命 令 - 图20E X T E R N A L 命 令 - 图21当 向 一 个 自 定 义 函 数 或 过 程 传 递 一 个 数 组 时 自 定 义 函 数 或 过 程 中 相 应 的 数组 在 项 目 管 理 器 中 必 须 是 同 一 的 包 含 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

E X T E R N A L 命 令 - 图22告 知 项 目 管 理 器 包 含 在 一 个 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 可 视 类库

EXTERNAL CLASS myvclass && 类 myvclass 必须存在

STORE 'myvclass' TO gcClassFile

MODIFY CLASS (gcClassFile)

FORM

E X T E R N A L 命 令 - 图23E X T E R N A L 命 令 - 图24E X T E R N A L 命 令 - 图25如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 表 单 定 义 文 件 应 包 含 F O R M 子 句 及 该表 单 文 件 名 FORM 子 句 与 SCREEN 子 句 等 价 .

EXTERNAL FORM dataentr && 表单文件 dataentr 必须存在

STORE 'dataentr' TO gcFormFile DO FORM (gcFormFile)

LABEL

E X T E R N A L 命 令 - 图26告 知 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 标 签 定 义 文件

EXTERNAL LABEL Maillabl && 标签文件 Maillabel 必须存在

STORE 'Maillabl' TO gcLabelFile LABEL FORM (gcLabelFile) PREVIEW

LIBRARY

E X T E R N A L 命 令 - 图27E X T E R N A L 命 令 - 图28当 在 SET LIBRARY 命 令 中 通 过 间 接 文 件 引 用 或 宏 替 换 引 用 某 个 库 文 件 时应 包 含 LIBRARY 子 句

EXTERNAL LIBRARY regress && 库文件 regress 必须存在

STORE 'regress' TO gcStatFunc SET LIBRARY TO (gcStatFunc)

M E N U

E X T E R N A L 命 令 - 图29E X T E R N A L 命 令 - 图30如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 有 菜 单 定 义 文 件 时 应 包 含 M E N U 子句 及 菜 单 文 件 名

EXTERNAL MENU pickfile && 菜单文件 Pickfile 必 须存在

STORE 'pickfile' TO gcSysMenPad MODIFY MENU (gcSysMenPad)

PROCEDURE

E X T E R N A L 命 令 - 图31标 识 一 个 外 部 过 程 或 用 户 自 定 义 函 数

EXTERNAL PROCEDURE delblank && 过程 delblank 必 须存在

STORE 'delblank' TO gcTrimBlanks DO (gcTrimBlanks) WITH 'A B C D E'

QUERY

E X T E R N A L 命 令 - 图32提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 一 个 查 询 文 件

EXTERNAL QUERY sales && 查询文件 sales 必须存在

STORE 'sales.qpr' TO gcSalesFile DO (gcSalesFile)

REPORT

E X T E R N A L 命 令 - 图33提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 报 表 定 义 文 件

EXTERNAL REPORT overdue && 报表文件 overdue 必 须存在

STORE 'overdue' TO gcReportFile REPORT FORM (gcReportFile) PREVIEW

SCREEN

E X T E R N A L 命 令 - 图34E X T E R N A L 命 令 - 图35E X T E R N A L 命 令 - 图36如 果 在 间 接 文 件 引 用 或 宏 替 换 中 包 含 有 表 单 定 义 文 件 则 应 包 含 SCREEN 子句 及 表 单 文 件 名 SCREEN 子 句 与 F O R M 子 句 等 价

EXTERNAL SCREEN dataentr && 表单文件 dataentr 必须 存在

STORE 'dataentr' TO gcScreenFile MODIFY SCREEN (gcScreenFile)

TABLE

E X T E R N A L 命 令 - 图37提 示 项 目 管 理 器 包 含 在 间 接 文 件 引 用 或 宏 替 换 中 的 文 件 是 V isual FoxPro 的 一个 表

EXTERNAL TABLE customer && 表 cu stomer 必 须存在

STORE 'customer' TO gcMyTable USE (gcMyTable)

说 明

E X T E R N A L 命 令 - 图38使用 EXTERNAL 命令 可以在项目管理器创建的项目中包含文件并解决未定义引用

E X T E R N A L 命 令 - 图39E X T E R N A L 命 令 - 图40E X T E R N A L 命 令 - 图41的问题 只有项目管理器才使用 EXTERNAL 命令 在程序的执行中忽略此命令

E X T E R N A L 命 令 - 图42E X T E R N A L 命 令 - 图43E X T E R N A L 命 令 - 图44E X T E R N A L 命 令 - 图45E X T E R N A L 命 令 - 图46有关 用项目管理器创建项目 的详细内容 请 参 阅 Microsoft Visual FoxPro 6.0 中文版程序员指南 E X T E R N A L 命 令 - 图47 第十 三 章 编译 应用程序

E X T E R N A L 命 令 - 图48项目管理器将 EXTERNAL 命令中指定的文件包含在项目中 在文件名前应加入

E X T E R N A L 命 令 - 图49E X T E R N A L 命 令 - 图50E X T E R N A L 命 令 - 图51E X T E R N A L 命 令 - 图52E X T E R N A L 命 令 - 图53E X T E R N A L 命 令 - 图54E X T E R N A L 命 令 - 图55E X T E R N A L 命 令 - 图56CLASS FILE FORM LABEL LIBRARY MENU PROCEDURE QUERY

E X T E R N A L 命 令 - 图57E X T E R N A L 命 令 - 图58E X T E R N A L 命 令 - 图59REPORT SCREEN 或 TABLE 以告知项目管理器要包含在项目中的文件类型

E X T E R N A L 命 令 - 图60E X T E R N A L 命 令 - 图61E X T E R N A L 命 令 - 图62E X T E R N A L 命 令 - 图63E X T E R N A L 命 令 - 图64当在名称表达式或宏替换中包含文件名时 也应给项目管理器以提示 这可以保证在项目连编时包含所有必要的文件 另外 在其他过程或用户自定义函数中创建的数组也必须提示给项目管理器

E X T E R N A L 命 令 - 图65E X T E R N A L 命 令 - 图66E X T E R N A L 命 令 - 图67E X T E R N A L 命 令 - 图68E X T E R N A L 命 令 - 图69E X T E R N A L 命 令 - 图70有关名称表达式和宏替换的详细内容 请参阅 & 命令 只要可能 就应使用名称表达式 而不要使用宏替换 这有助于提高程序的性能

请 参 阅

BUILD APP, BUILD PROJECT