接口生成器可在相应的 .df 文件所在的目录中生成 .dfc 文件。不要将接口生成器与接口设计器混淆起来。接口设计器用来定制与向 .df 文件添加功能。接口生成器将 .df 文件处理为 .dfc 文件。接口生成器是从命令提示版本(i-gen.exe)或窗口化版本(i-genw.exe)运
行的。
缺省情况下,接口生成器在相应 .df 文件所在的目录中生成 .dfc 文件。此外,接口生成器在将字符串写入 .dfc 输出文件时,也使用 OEM 或 ANSI 代码页。如果未在命令提示符处指定值,则接口生成器使用从 softart.ini 文件中读取的值。
可使用下列方法之一打开窗口化的接口生成器版本:
要使用接口生成器:
注:
与 TSD 脚本分析器不同,接口生成器不为 .df 文件搜索 SAIPATH 或 path 环境变量。如果该文件不在当前目录中,则必须指定一个完整的文件路径。注:
对于 OS/2 用户来说,如果未显示 OS/2 屏幕,则不要使用接口生成器中的转换功能。请使用接口设计器显示屏幕。接口生成器(i-gen)的命令提示版本使用下列语法:
i-gen [标志] [规范文件]
注:必须输入规范文件的名称。
在下列章节中列出了有效标志。
下列标志仅用于接口生成器的命令提示版本。
标志 | 说明 |
-convert | 转换先前版本(4.2 或更旧版本)中的规范说明文件。 |
-d | 在 .df 文件中定义一个影响 #IFDEF 指令的常量。 |
-l [文件名] | 指定列表文件名。输出到文件,而不是输出到屏幕上。 |
-e [文件名] | 指定错误文件名。将错误消息写入某个文件,而不是屏幕上。 |
-IDE [文件名] | 除以 TSD 开发工具包的超文本格式书写错误消息,以易于访问错误源 外,其他方面与 -e 功能相同。 |
-Q | 静止模式。屏幕上不显示文本。 |
-? | 打印运行 i-gen.exe 的语法。 |
下列错误适用于接口生成器的图形与窗口化版本,也适用于命令行。
错误 | 说明 |
无法识别的字符<c> | TSD 脚本分析器在 .df 文件中遇到了语法上为非法的字符。 |
无法识别的命令行开关<开关> | i-gen(或 i-genw)的命令行语法不正确。删除或替换出错的开关,然后重新运行接口生成器。 |
要求输入规范文件名。 | 您未在命令行输入规范文件名。 |
无法打开规范文件。 | 该文件不存在或不可读。可能已发生软盘或联网故障。 |
无法创建临时文件。 | 接口生成器没有在当前目录中创建新文件的权限。 |
字符串开头缺少引号。 | 字符串声明的语法如下所示:字符串<标识符> '<字符串文本>' 如果缺少第一个单引号,则出现这种错误。 |
字符串超过 4096 个字符 - <string> | 这种错误是由于缺少字符串文字上的一个用于封闭的单引号造成的。 |
8非法预处理器指令<directive> | 8非法预处理器指令有: #INCLUDE、#DEFINE、#IFDEF、#IFNDEF、#ELSE 与 #ENDIF |
无法重新定义<variable> | 一个值只能定义一次。进行第二次定义时产生这种错误。 |
#else 在 #if 块<name>外 | 未先见到 #ifdef 就遇到了 #else。 |
未打开 #ifdef 语句就出现 #endif。 | 这种错误可能是由错误匹配的 #IFDEF / #END 对引起的。 |
语法过时 | 当前版本中不支持<name>关键字。使用 -convert 命令行标志或选择“TSD 开发工具包 4.x 转换”复选框可从 .df 文件中删除这些关键字。 |
DISPLAY 是过时关键字,请使用 DEFINE。 | DISPLAY 关键字已过时。现在使用 DEFINE 语句声明所有控件。 |
重新声名 FORM 名称<name> 重新声名 STRING 名称<name> 重新声名 TOOLBAR 名称<name> 重新声名 MENU 名称<name> 重新声名 FIELD 标识符<name> |
实体名称必须唯一。这种错误是因为出现另一个标识符而产生的。 |
未声明常量<name> | 声明了一个不存在或存在于另一个范围中的常量。.df 编程器允许在文件和窗体中使用 CONSTANT 段。 |
可定义字符串和整数常量。 | 接口设计器不支持使其过时的常量段。 |
丢失分号。 | 在每个语句的结尾必须使用分号。 |
丢失逗号。 | 必须使用逗号作分隔符。 |
格式错误的字段限定符<name> | 字段定义中的一个限定符无效。 |
又一次定义了模式限定符。 | n/a |
格式错误的窗口属性<name> | 窗体的 WINDOW 段中的一个属性无效。 |
无法打开已分析的代码文件<name>。 | 无法创建 .dfc 文件。 |
指定了互斥的限定符。 | 为某一字段指定了两个合法限定符,但是这两个限定符是互斥的。例如,Accept 和 Cancel 是按钮的属性。 |
指定了一个以上的缺省按钮。 | 只应指定一个具有缺省模式的按钮。(未严格按子窗体的说明强制。) |
'#include 后必须是一个带单引号的文件名。 | 已遇到一个不包含任何内容的 #include 语句。 |
<name> 未放在 #endif 之内。 | 已遇到一个未在 #endif 内的 #ifdef 或 #else。 |
未定义窗体名称<name>,页面名称必须是已定义的窗体。 | 指定笔记本时,使用标签之前必须对标签加以说明。TSD 开发工具包 5.0 具有说明标签的备用方法,这样,可将其他文件中的正向引用和标签包含进来。 |
输入长度被模式定义替换。 | 一个条目字段或文本框都有一个指定的输入长度和自定义模式。该模式定义一个输入长度,这样就忽略 InputLength 语句。 |
指定了一个以上的填充字符。 | 一个模式只能有一个填充字符。(使用所遇到的最后一个填充字符。) |
模式<name>的显示掩码和条目掩码的长度不同。 | 对于要正确运行的模式来说,显示掩码与条目掩码的长度应该相同。 |
单选按钮必须有一个按钮列表。 | 已定义一个选项按钮集,但未指定选项按钮。 |
如果未指定 NoWordWrap,则忽略 HorizontalScrollBar。 | MLE 通常绕过对于右边界来说太长以致于使水平滚动困难的行。 |
初始单选按钮值超出范围。 | 指定的初始选项按钮不在按钮列表中的。 |
无法打开日志文件。 | 应验证磁盘是否已满,以及您是否具有对该目录的网络创建/写权限。 |
未定义子窗体<name>,必须在引用子窗体之前对其加以定义。 | 指定子窗体时,必须在使用嵌套的窗体之前对其加以说明。TSD 开发工具包具有说明子窗体的备用方法,这样,可使用其他文件中的向前引用。 |