• 【Excel 4.0 函数】REGISTER


    REGISTER.ID

    返回指定的 DLL 或 代码资源注册过的函数 ID。如果 DLL 或 代码资源没有注册,这个函数将会注册它们,并返回 注册ID。

    REGISTER.ID 可以用于工作表(不同于 REGISTER函数),但你不能在 REGISTER.ID 中指定函数名称和参数名称。更多关于 DLL 和代码资源以及数据类型的介绍,请查看 “使用 CALL 和 REGISTER 函数”


    注意 因为 Windows 上的 Excel 程序和 苹果机上的 Excel 程序使用了不同的代码资源类型,REGISTER.ID 在两种系统上使用的语法,有一点区别。


    Windows 语法

    REGISTER.ID ( module_text, procedure, type_text )

    参数说明

    module_text 指定包含了一个DLL名称,DLL中包含了 Windows Excel 要使用函数代码。

    Procedure 指定DLL中的函数名称。你也可以使用在DLL导出文件 .del 中关联的序号。

    type_text 指定返回值和参数值的数据类型。第一个字母表示返回值类型。如果函数或代码资源已经注册,你可以省略这个参数。

    实例

    REGISTER.ID("Kernel32", "GetTickCount", "J!")

    使用 CALL 和 REGISTER 函数

    接下来,我们将描述,使用 CALL、REGISTER、REGISTER.ID 这三个函数时的参数和返回值类型。参数和返回值类型,根据你的操作系统环境,会有一点不同,这些不同在后面的数据类型表中有描述。

    Excel 开发具包,包含了 DLL 、代码资源、Excel API、文件格式以及
    其它一些 Excel 开发技术的内容。它还包含了开发自定义应用的代码示例和程序设计工具。你可以通过你的软件供应商或微软公司获取它。在美国,可以联系 微软开发服务团队 (800)227-4679 获取更多信息。

    数据类型

    CALL、REGISTER、REGISTER.ID 函数,type_text 参数指定了 DLL函数或代码资源中的返回值和参数值数据类型。 type_text 参数的第一个字符指定了返回值的类型。其余的字符表明所有参数的数据类型。例如,一个DLL函数返回了一个浮点数,并带有一个整型和浮点型参数,那么 type_text 参数就要设置为 “BIB”。

    下表包含了,Excel 可以识别的完整数据列表,表中对每种数据类型都进行了详细的描述,以及 C 语言中的类型声明。

    代码 描述 传送 C 语言描述
    A 逻辑值(FALSE = 0,TRUE = 1) Value short int
    B IEEE 8字节浮点数字 Value double
    C 以空字符结尾的字符串 (字符串最大长度是255) Reference char *
    D 字节计数字符串(第一个字节包含最大数量为255) Reference  Unsigned char *
    E IEEE 8字节浮点数字 Reference double *
    F 以空字符结尾的字符串(字符串最大长度为255个字符) Reference(modify in place)  char *
    G 字节计数字符串(第一个字节描述了字符串的长度,字符串最大长度为255个字符) Reference(modify in place)  Unsigned char *
    H 无符号2字节整型 Value Unsigned short int
    I 带符号2字节整型 Value short int
    J 带符号4字节整型 Value short int
    K 数组 Reference FP *
    L 逻辑值(FALSE = 0),TRUE = 1  Reference short int *
    M 带符号 2字节 整型 引用 short int *
    N 带符号 4字节 整型 引用 long int *
    O 数组 Reference  传递3个参数
    unsigned short int *
    unsigned short int *
    P OPER 数据结构 Reference OPER *
    R XLOPER 数据结构 Reference XLOPER *

    备注

    • C 语言声明是基于你的编译默认 8-byte doubles, 2-byte short integers, and 4-byte long integers 类型
    • Windows 程序开发环境中,所有的指针都是远指针。例如,你可以使用 unsigned char far * 声明 D 数据类型。
    • 所有DLL或代码资源中的函数都使用 Pascal 调用惯例。很多 C 编译器,允许你使用 Pascal 调用惯例。例如:
      pascal void main(rows, columns, a)
    • 如果函数为它的返回值,使用传入引用数据类型,你可以传递 空返回指针。Excel 将会解释为 #NUM! 错误值。

    更多数据类型信息

    本节包含了 数据类型 F, G, K, O, P 和 R 数据类型的详细信息,以及 type_text 参数的其它信息。

    F 和 G 数据类型

    使用 F 和 G 数据类型,函数可以修改由 Microsft Excel 分配的字符串缓存。如果返回的数据类型为 F 或 G,Excel 将忽略函数返回值。然后 在函数的参数列表中从左到右依次查找到数据类型为 F 或 G 的参数,然后,将此参数的内容做为函数的返回值。Excel 为参数分配了 256 个字符,因此函数返回的字符串长度,会大于它接收到的字符串长度。

    K 数据类型

    K 数据类型指向一个可变长度的 FP 结构。结构原型如下:

    typedef struct _FP
    {
    	unsigned short int rows;
    	unsigned short int columns;
    	double array[1];		/* Actually, array[rows][columns] */
    } FP;
    

    double array[1] 声明只有一个元素的数组。实际上,数组中的元素数据等于 行的数量乘上列的数量。

    O 数据类型

    O 数据类型只能用于参数,不能用于返回值。它传送了3个内空:行数量的指针,列数量的指针,浮点类型二维数组指针。

    代替返回值,函数可以编辑 O 数据类型传送的数组。为此,你可以使用 ">O" 作为 type_text 参数。

    O 数据类型与 FORTRAN DLL 兼容,通过引用传递参数。

    P 数据类型

    P 数据类型指向 OPER 结构。 OPER 结构 包含8个字节的数据,随后的两个字节表示数据类型。通过 P 数据类型 DLL 函数或代码资源可以接收和返回任意一种 Excel 数据类型。

    OPER 结构原型如下:

    
    typedef struct _oper
    
    {
    	union
    	{
    		double num;
    		unsigned char *str;
    		unsigned short int bool;
    		unsigned short int err;
    		struct
    		{
    			struct _oper *lparray;
    			unsigned short int rows;
    			unsigned short int columns;
    		} array;
    	} val;
    	unsigned short int type;
    } OPER;
    

    类型字段包括了下表中的一个值。

    类型 描述 使用
    1 Numeric num
    2 String(first byte contains length of string) str
    4 Boolean(logical) bool
    16 Error: the error values are:
    0 #NULL!
    7 #DIV/0!
    15 #Value!
    23 #REF!
    29 #NAME?
    36 #NUM!
    42 #N/A
    err
    64 Array array
    128 Missing argument
    256 Empty cell
    type 1 Numeric num 2 String (first byte contains length of string) str 4 Boolean (logical) bool 16 Error: the error values are: 0 #NULL! 7 #DIV/0! 15 #Value! 23 #REF! 29 #NAME? 36 #NUM! 42 #N/A err 64 Array array 128 Missing argument 256 Empty cell

    最后二个值只能做为参数,不能用于返回值。当调用函数时缺少一个参数,就会使用 128 Missing argument 传送。当引用了一个空单元格时,就会传递 Empty cell(256) 。

    R 数据类型

    从 DLL 中调用 Excel 函数时使用,R 数据类型指向一个 XLOPER 结构,它是 OPER 的加强版本,在 Excel 4.0 和 后续版本中,当你在 DLL 中 调用 Excel 函数时可以使用 R 数据类型编写 。 通过 XLOPER 结构 DLL 函数可以传送 表引用 和实现 流程控制。更多关于 R 数据类型的内容,请查看 Microsoft Excel Developer's Kit

    易失性函数和重计算

    只有当一个函数输入到单元格后,Excel 就会对函数进行计算,当它的引用发生改变,可单元格在一个宏中进行了计算。在 工作表中,你可以让函数为 易失性 状态,易失性函数,无论何时在工作表的任意单元格中进行计算时,易失性函数都必须重新进行计算。非易失性函数只在输入变量改变时才重新计算,若不用于计算工作表单元格的用户自定义函数中,则此方法无效。要让函数为易失性的,要感叹号(!)做为参数的最生一个字符,例如:

    CALL("Kernel32", "GetTickCount", "J!")
    

    在适当的位置进行修改

    您可以使用一个单一的数字n 作为 type_text 返回类型代码,其中n是一个数字从1到9。这告诉Microsoft Excel修改变量的位置指出type_text第n个参数,而不是返回一个值。这也被称为修改到位。第N个参数必须是一个引用传递数据类型(C,D,E,F,G,K,L,M,N,O,P,R). DLL函数或代码资源也必须宣布无效关键字的C语言的程序关键字(或Pascal语言)。  

    RegisteredFunctions 属性

    返回一个数组,包含了 DLL 或 代码资源中的函数列表,它们使用 REGISTERREGISTER.ID 函数注册。只读取。数组中的每一行都包含了单个函数的3项信息,见下表:

    1. DLL或代码资源名称
    2. DLL或代码资源中的过程名
    3. 指定返回的数据类型和参数类型

    备注

    如果这里没有注册函数。此属性返回 Null。使用 IsNull 函数可以测试返回的值是否是 Null。

  • 相关阅读:
    解决ffmpeg打开流各种超时问题
    ffmpeg函数使用
    如何从AVFrame::data【0】里获取RGB24数据和YUYV422数据
    ffmpeg取rtsp流时av_read_frame阻塞的解决办法
    FFMPEG实时解码网络视频流(回调方式)
    JavaScript 演练(7). 赋值与引用
    JavaScript 演练(5). 模拟类
    曾经对 TMemoryStream.Memory 错误的理解
    JavaScript 演练(10). 谁的 this ?
    JavaScript 演练(6). 函数的定义与自执行
  • 原文地址:https://www.cnblogs.com/boluoke/p/5908570.html
Copyright © 2020-2023  润新知