特殊功能支持库

特殊功能支持库 帮助手册20080815版 返回支持库手册 返回首页

本支持库提供部分相对特殊的命令，供易语言高级用户使用。

操作系统支持： Windows、Linux

命令类别：

系统处理

程序调试

其他

附加

适用版本，特殊功能支持库 （2.1#1版）


其他

其他 类别 跳至：特殊功能支持库


置入代码 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
在编译后文件代码段中当前语句位置置入指定的机器指令码数据。

语法： 无返回值 置入代码 （代码数据）

参数名 | 描 述
代码数据 | 必需的； 通用型。欲置入到代码段中的机器指令码数据，可以是字节集数据或二进制文件名文本。

例程:

说明:

通过“置入代码”命令实现一个断点的效果。

参见:例程


取变量地址 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
返回指定变量的内存地址（在内联汇编代码中可以在执行本命令后立即检查EAX寄存器获得），如欲修改该地址处内容（尤其是文本型、字节集型或复合数据类型变量），请谨慎操作，否则很可能造成内存垃圾或程序崩溃。

语法： 整数型 取变量地址 （欲获取其地址的变量）

参数名 | 描 述
欲获取其地址的变量 | 必需的； 通用型，参数数据只能提供变量及变量数组。

例程:

说明:

通过“取变量地址”命令获得指定变量的地址。

注意：变量的地址有时不和变量实际内容的地址相同。如果要准确的取出变量内数据所在的地址，请使用“取变量数据地址”命令。


取子程序地址 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
返回指定子程序的内存代码地址（在内联汇编代码中可以在执行本命令后立即检查EAX寄存器获得）。

语法： 整数型 取子程序地址 （欲获取其地址的子程序）

参数名 | 描 述
欲获取其地址的子程序 | 必需的； 子程序指针。

例程:

说明:

通过“取子程序地址”命令获取指定子程序的地址（指针）。

注：本命令效果等同于“到数值(&[子程序名])”。


取变量数据地址 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
取指定变量中数据的内存地址。返回值为0表示没有取到变量地址。对文本型或字节集型变量而言，如果其长度为0，将返回0；对数组变量而言，如果其成员数为0，也将返回0。对于文本型或字节集型变量，返回值为文本数据或字节集数据的地址。其它情况下，本命令与“取变量地址”具有相同的返回值。注意：一旦变量超出其作用域范围，或文本型/字节集型变量被重新赋值，或数组变量被重新赋值，先前取到的变量地址将变成无效地址，再对该地址进行读写操作很有可能导致程序崩溃。

语法： 整数型 取变量数据地址 （变量）

参数名 | 描 述
变量 | 必需的； 通用型，参数数据只能提供变量及变量数组。

例程:

说明:

通过“取变量数据地址”命令，获取指定变量内存放数据的真实内存地址。


申请内存 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
向易语言运行时系统申请指定大小的内存区域。执行成功返回申请到的内存首地址，失败返回0。由本命令申请的内存必须通过“释放内存”命令释放。

语法： 整数型 申请内存 （欲申请的内存字节数， ［是否清零］）

参数名 | 描 述
欲申请的内存字节数 | 必需的； 整数型。
是否清零 | 可选的； 逻辑型。如果本参数为“真”，则将申请到的内存区域全部以0填充。如果省略本参数，默认为“假”。

例程:

说明:

通过“申请内存”命令，申请一段指定大小的内存空间。


释放内存 命令 操作系统支持：Windows、Linux 所属类别：其他

为高级用户提供，初级用户无需掌握；
释放由“申请内存”所获取的内存区域。内存区域被释放后，不允许再进行读写操作。

语法： 无返回值 释放内存 （欲释放的内存地址）

参数名 | 描 述
欲释放的内存地址 | 必需的； 整数型。本参数应当是“申请内存”命令的返回值。

例程:

说明:

通过“释放内存”命令，释放指定内存指针所指向的内存区域。


程序调试

程序调试 类别 跳至：特殊功能支持库


调试输出 命令 操作系统支持：Windows、Linux 所属类别：程序调试

仅在易程序的调试版本中被执行，在发布版本中将被直接跳过；
类似于易语言核心库中的“输出调试文本()”命令，向输出面板输出一行调试文本。本命令可接受任意多个通用型(任意基本类型)参数及数组。与“输出调试文本()”不同，本命令的所有参数数据仅输出为一行文本（各参数之间以“ | ”间隔）——既保持了数据相关性，又有效利用了输出面板的横向宽度。另外，本命令对各种数据的输出格式都颇为友好：如字节集被输出为形如“字节集:n{101,121,117,121,97,110,...}”，其中n为字节集长度，{}之间为字节集数据；如数组被输出为形如“数组:m,n{...}”，其中“m,n”表示该数组为m行n列，{}之间为数组数据。

语法： 无返回值 调试输出 （［欲输出值］， ... ）

参数名 | 描 述
欲输出值 | 可选的； 可扩充的；通用型，参数数据可以同时提供数组或非数组数据。对于非“文本型”参数，将自动转换为文本。本参数可接受任意基本类型，但不接受数组以及自定义数据类型。

例程:

说明:

通过“调试输出”命令向输出栏中输出指定内容。


验证 命令 操作系统支持：Windows、Linux 所属类别：程序调试

类似于易语言核心库中的“检查()”命令，本命令在调试版中验证参数值（或其计算结果）是否为“零值”，如果是“零值”则易程序的执行将被暂停且警示（相当于设置了条件断点）。与“检查()”命令不同的是，本命令在运行版中仅仅忽略“检查”这个步骤，但不会放弃执行参数语句（这在参数为命令/方法调用或子语句的情况下尤为重要）；此外，本命令可以检查任意基本类型的参数，且可以同时检查多个参数。如果提供了多个参数，所有的参数都会被验证，但只要出现一个“零值”，程序就会被暂停且警示。“零值”定义：字节型/短整数型/整数型/长整数型值等于0，小数型/双精度小数型绝对值小于0.00001，逻辑型值为“假”，文本型/字节集型数据长度等于0，数组成员数等于0，日期时间值为“1899/12/30 00:00:00”，子程序指针的执行地址为0。注：目前暂不支持“子语句类型”的参数。

语法： 无返回值 验证 （［欲检查值］， ... ）

参数名 | 描 述
欲检查值 | 可选的； 可扩充的；通用型，参数数据可以同时提供数组或非数组数据。可以为普通数值、变量、命令/方法调用、子语句等。如果本参数为命令/方法调用或子语句，总是会被执行，即使在非调试版本中。

例程:

说明:

通过“验证”命令检查“内存指针”是否为“0”。如果为“0”程序将在这里被截停。


附加

附加 类别 跳至：特殊功能支持库


调用子程序 命令 操作系统支持：Windows、Linux 所属类别：附加

为高级用户提供，初级用户无需掌握；
以stdcall方式(即WINAPI或Pascal)调用指定的子程序（子程序指针，或子程序地址）并取回被调用子程序的返回值，支持任意多个参数，参数支持除字节集之外的其它所有基本数据类型。调用子程序之前，您需要明确地知道它的参数类型和参数个数，以及返回值类型。本命令返回“真”仅表示调用过程中没有出异常情况，并不表示被调用的子程序执行成功。

语法： 逻辑型 调用子程序 （子程序指针或子程序地址， ［保留参数］， ［返回值］， ［参数］， ... ）

参数名 | 描 述
子程序指针或子程序地址 | 必需的； 通用型。提示：在子程序名称前加“&”即可得到该子程序的“子程序指针”，如“&子程序1”就是“子程序1”的子程序指针；子程序地址可通过中的“取子程序地址()”命令获取，到整数(&子程序1)返回的也是子程序1的执行地址，也可通过Windows系统API“GetProcAddress()”获取，或由外部程序传入。
保留参数 | 可选的； 通用型。
返回值 | 可选的； 通用型，参数数据只能提供变量。本参数用于接收子程序被调用后的返回值；如果该子程序没有返回值或不需要接收返回值，请省略本参数。提供本参数时，请务必提供准确的数据类型，否则所得结果可能不正确。
参数 | 可选的； 可扩充的；通用型。本参数值将作为参数传入被调用子程序。如果相应子程序没有参数，请省略本参数；如果相应子程序有多个参数，请重复提供本参数。请务必提供准确的参数类型和参数个数，否则后果不可预知。

例程:

说明:

通过“调用子程序”命令，执行指定子程序的地址指针。

注：此命令在动态调用DLL时非常有用。


推迟调用子程序 命令 操作系统支持：Windows 所属类别：附加

为高级用户提供，初级用户无需掌握；
本命令被执行时，在内部启动一个计时器，然后立刻返回（以便易语言继续执行后面的程序代码），当计时时间到时才调用参数所指定的子程序。如上所述，本命令不会阻塞易语言程序的运行。请注意不要在本命令已调用但相应子程序尚未执行这一段时间内再次调用本命令（将直接返回“假”）。本命令的第四个参数“返回值”目前不予使用。

语法： 逻辑型 推迟调用子程序 （推迟时间(单位: 毫秒)， 子程序指针或子程序地址， ［保留参数］， ［返回值］， ［参数］， ... ）

参数名 | 描 述
推迟时间(单位: 毫秒) | 必需的； 整数型。如果本参数小于或等于0，则子程序将被立刻调用。本参数最大可设置为 2147483647(0x7fffffff) 毫秒（约 596 小时）。
子程序指针或子程序地址 | 必需的； 通用型。提示：在子程序名称前加“&”即可得到该子程序的“子程序指针”，如“&子程序1”就是“子程序1”的子程序指针；子程序地址可通过中的“取子程序地址()”命令获取，到整数(&子程序1)返回的也是子程序1的执行地址，也可通过Windows系统API“GetProcAddress()”获取，或由外部程序传入。
保留参数 | 可选的； 通用型。
返回值 | 可选的； 通用型，参数数据只能提供变量。本参数用于接收子程序被调用后的返回值；如果该子程序没有返回值或不需要接收返回值，请省略本参数。提供本参数时，请务必提供准确的数据类型，否则所得结果可能不正确。
参数 | 可选的； 可扩充的；通用型。本参数值将作为参数传入被调用子程序。如果相应子程序没有参数，请省略本参数；如果相应子程序有多个参数，请重复提供本参数。请务必提供准确的参数类型和参数个数，否则后果不可预知。

例程:

说明:

通过“推迟调用子程序”命令，在1.5秒后调用“被调用子程序指针”所指向的子程序。

注意：本命令的第四个参数“返回值”目前不予使用。


调用易系统功能 命令 操作系统支持：Windows、Linux 所属类别：附加

为高级用户提供，初级用户无需掌握；
具体的功能号及其所对应的参数值和返回值，请参考易语言支持库开发手册。

语法： 整数型 调用易系统功能 （功能号， ［参数一］， ［参数二］）

参数名 | 描 述
功能号 | 必需的； 整数型。可以为易语言支持库开发手册中定义的以“NES_”,“NRS_”,“NAS_”开头的常量之一。
参数一 | 可选的； 整数型。如果本参数被省略，默认为0。
参数二 | 可选的； 整数型。如果本参数被省略，默认为0。

例程:

说明:

通过“调用易系统功能”命令调用易语言核心集成的未公开功能。


取文本 命令 操作系统支持：Windows、Linux 所属类别：附加

为高级用户提供，初级用户无需掌握；
本命令有多项功能：将任意基本数据类型的参数或数组参数转换为文本；文本中包含引号（"、“、”）和换行符等情况下的简捷处理方案；提供类似于C/C++语言中sprintf()的格式化文本功能。 示例：取文本 (“~%s~诞生于%d年秋。”, “易语言”, 2000) 等效于：“” ＋ #左引号 ＋ “易语言” ＋ #右引号 ＋ “诞生于” ＋ 到文本 (2000) ＋ “年秋。” 都将生成文本：““易语言”诞生于2000年秋。” 但很明显，前者比后者简捷明了很多，且输入代码时更加方便直观。后者因为 #引号、#左引号、#右引号 等常量以及加号（“+”）的使用，导致代码分散且混乱，不易输入和阅读。

语法： 文本型 取文本 （原始文本， ［参数］， ... ）

参数名 | 描 述
原始文本 | 必需的； 通用型，参数数据可以同时提供数组或非数组数据。此文本中可包含“半角双引号替换符（初始值为"`"）”“全角左引号替换符（初始值为"~"）”“全角右引号替换符（初始值为"~"）”“文本替换符”。其中“文本替换符”由前缀文本（初始值为"%"）和紧接着的下一个半角字符（可为"s","d","f","t","T","n","N"等）组成。当命令执行后，此文本中的这些特殊文本将被替换为相应的文本（如`被替换为"，~被分别替换为“和”，%s,%d,%f被替换为参数文本，%t被替换为半角双引号包围的参数文本，%T被替换为全角双引号包围的参数文本），%n被替换为换行符（即易语言中的“#换行符”常量），%N被替换为两个换行符（相当于两个连续的%n）。如果此参数的类型不是“文本型”，则首先将其转换为文本型，再进行如上处理。本命令的返回值，就是经过以上文本替换操作后的结果文本。上述提到的各种替换符或其前缀，可通过“取文本_属性设置”命令自行定义。注意：当“文本替换符”为%n或%N时，它不占用后面的参数值。
参数 | 可选的； 可扩充的；通用型，参数数据可以同时提供数组或非数组数据。此参数值用于替换上一参数中的“文本替换符”，并与之依序一一对应。即，此处的第一个参数用于替换第一个“文本替换符”，第二个参数用于替换第二个“文本替换符”，如此类推，但特殊情况下除外（如%n和%N就不占用此参数）。特别地，如果本参数为数组，则将数组中的每一个成员作为一个逻辑单位与“文本替换符”进行逐一匹配和替换。如果本参数不是文本型，则首先将其（或其成员）转换为文本，然后进行替换操作。

例程:

说明:

通过“取文本”命令，用指定文本替换一段文本中特殊标记位置的内容。


取文本_属性设置 命令 操作系统支持：Windows、Linux 所属类别：附加

为高级用户提供，初级用户无需掌握；
本命令用于设置“取文本”命令所使用的各项属性值。对于这些属性，系统都有默认的初始值（详见本命令的参数说明），故一般情况下无需调用此命令。所有文本属性值均不允许超过10个字符（或5个汉字），否则将导致设置失败且返回“假”。通过本命令所设置的属性值将一直有效，直至程序结束或下一次调用本命令修改了此修改值。

语法： 逻辑型 取文本_属性设置 （［半角双引号替换符］， ［全角左引号替换符］， ［全角右引号替换符］， ［文本替换符前缀］）

参数名 | 描 述
半角双引号替换符 | 可选的； 文本型。当调用“取文本”命令时，此处指定的参数值将被替换为半角双引号(")。如果本参数被省略，则保持原有替换符不变。系统初始化的半角双引号替换符是“`”（此键位于ESC键下方）。
全角左引号替换符 | 可选的； 文本型。当调用“取文本”命令时，此处指定的参数值将被替换为全角左引号(“)。如果本参数被省略，则保持原有替换符不变。系统初始化的全角左引号替换符是“~”（此键位于ESC键下方，输入时需同时按下Shift）。注意，此参数值不可等同于第一个参数“半角双引号替换符”。
全角右引号替换符 | 可选的； 文本型。当调用“取文本”命令时，此处指定的参数值将被替换为全角右引号(”)。如果本参数被省略，则保持原有替换符不变。系统初始化的全角右引号替换符是“~”（此键位于ESC键下方，输入时需同时按下Shift）。注意，此参数值可以等同于第二个参数“全角左引号替换符”，但不可等同于第一个参数“半角双引号替换符”。
文本替换符前缀 | 可选的； 文本型。当调用“取文本”命令时，完整的文本替换符（由前缀+特定字符组成）将被替换为相应位置处的参数文本（或特定文本）。如果本参数被省略，则保持原有替换符前缀不变。系统初始化的文本替换符前缀是“%”。

例程:

说明:

通过“取文本_属性设置”命令，设置在使用“取文本”命令时被替换的字符格式。


取文本_属性读取 命令 操作系统支持：Windows、Linux 所属类别：附加

为高级用户提供，初级用户无需掌握；
本命令用于获取“取文本”命令所使用的各项属性设置，结果将存入相应的参数变量中。

语法： 无返回值 取文本_属性读取 （［半角双引号替换符］， ［全角左引号替换符］， ［全角右引号替换符］， ［文本替换符前缀］）

参数名 | 描 述
半角双引号替换符 | 可选的； 文本型，参数数据只能提供变量。
全角左引号替换符 | 可选的； 文本型，参数数据只能提供变量。
全角右引号替换符 | 可选的； 文本型，参数数据只能提供变量。
文本替换符前缀 | 可选的； 文本型，参数数据只能提供变量。

例程:

说明:

通过“取文本_属性读取”命令获取“取文本”命令执行时替换字符的格式。


系统处理

系统处理 类别 跳至：特殊功能支持库

延迟


延迟 命令 操作系统支持：Windows 所属类别：系统处理

延迟一段时间，然后继续执行后面的程序代码。与易语言核心支持库中的“延时()”命令不同的是，本命令在等待期间允许用户进行其它操作（如点击按钮等）。

语法： 无返回值 等待 （要等待的时间(毫秒)）

参数名 | 描 述
要等待的时间(毫秒) | 必需的； 整数型。提示：1000毫秒等于1秒。

例程:

说明:

通过“延迟”命令，将程序执行流程暂停指定时间后继续执行。