⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elibtypes.pas

📁 支持库类 / 模块控件 / 支持库类 eLIB++支持库 源代码 Delphi
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit elibTypes;
////////////////////////////////////////////////////////////////////////////////
//
//   易语言支持库开发文档·Pascal版声明文件
// 本文档属liigo版权所有,复制、修改、删除、散发不究! liigo@sina.com     2003.5
// ------------------------------------------
////////////////////////////////////////////////////////////////////////////////
//
// 版权声明:
//     本文件(原C++版)版权为易语言作者吴涛所有,仅授权给第三方用作开发易语言支持库,禁止用于其他任何场合。
//
// 以上是易语言作者吴涛的版权声明,下面是liigo的声明:
//     本人完成了原声明文件从C++到Pascal语言格式的转换,不对转换成果保留任何权利,任何人都可以在任何场合任意复制、粘贴、删除、修改、散发,但前提是必须保证不侵犯吴涛的权利!至于具体的尺度如何把握,可就不关俺的事了,您自个儿琢磨去吧 ^_^
//
////////////////////////////////////////////////////////////////////////////////

(*******************************************************************************
!!! 注意:支持库是标准的DLL文件,但文件名的后缀必须固定为.FNx,其中x为一类型字母,目前有意义的后缀有:
    1、“.fne”: 带编辑信息、有运行支持代码的支持库;
    2、“.fnl”: 带编辑信息、无运行支持代码的支持库;
    3、“.fnr”: 不带编辑和声明信息、仅有运行支持代码的支持库;
!!! 编译后直接改名*.dll为*.FNx即可。    
*******************************************************************************)

{$IFNDEF __LIB_H}
{$DEFINE __LIB_H}

interface

//uses 

type
  PLongBool  = ^LongBool;
  PByteArray = ^TByteArray;
  TByteArray = array[0..32767] of Byte;

type
  DATA_TYPE  = LongWord ;    // 数据类型: _SDT_NULL, _SDT_ALL, SDT_BYTE, SDT_SHORT, SDT_INT, SDT_INT64, SDT_FLOAT, SDT_DOUBLE, SDT_BOOL, SDT_DATE_TIME, SDT_TEXT, SDT_BIN, SDT_SUB_PTR 等
  pDATA_TYPE = ^LongWord ;   // DATA_TYPE 参见下面的常量定义

const
  //////////////////////////////////////////////////////////////////////////////
  // 以下是由系统定义的基本数据类型,不可更改。(以下常量数值的定义绝对不会有错!)

  _SDT_NULL     = 0;           // 空白数据类型
  _SDT_ALL      = 2147483648;  // 通用型, 仅用于支持库命令定义其参数或返回值的数据类型,当用于定义库命令参数时,_SDT_ALL可以匹配所有数据类型(数组类型必须符合要求)

  SDT_BYTE      = 2147483905;  // 字节型
  SDT_SHORT     = 2147484161;  // 短整数型
  SDT_INT       = 2147484417;  // 整数型
  SDT_INT64     = 2147484673;  // 长整数型
  SDT_FLOAT     = 2147484929;  // 小数型
  SDT_DOUBLE    = 2147485185;  // 双精度小数型
  SDT_BOOL      = 2147483650;  // 逻辑型
  SDT_DATE_TIME = 2147483651;  // 日期时间型
  SDT_TEXT      = 2147483652;  // 文本型
  SDT_BIN       = 2147483653;  // 字节集
  SDT_SUB_PTR   = 2147483654;  // 子程序指针

  //////////////////////////////////////////////////////////////////////////////
  
type
  //////////////////////////////////////////////////////////////////////////////
  // “参数信息”数据结构 ARG_INFO

  pARG_INFO = ^ARG_INFO;
  ARG_INFO  = record
    m_szName         : PChar;     // 参数名称
    m_szExplain      : PChar;     // 参数详细解释
    m_shtBitmapIndex : Word;      // 参见 CMD_INFO 中的同名成员
    m_shtBitmapCount : Word;      // 参见 CMD_INFO 中的同名成员
    m_dtDataType     : DATA_TYPE; // 参数的数据类型
    m_nDefault       : LongWord;  // 参数默认值,见下面的说明
    m_dwState        : LongWord;  // 状态值,见下面的说明和常量定义

    ////////////////////////////////////////////////////////////////////////////
    //
    // 其中, m_nDefault 为系统基本类型参数的默认指定值(在编译时编译器将自动处理):
    //
    //   1、数值型:直接为数值(如为小数,只能指定其整数部分,如为长整数,只能指定不超过INT限值的部分);
    //   2、逻辑型:1 代表'真',0 代表'假';
    //   3、文本型:本成员此时为PChar指针,指向默认文本串;
    //   4、其它所有类型参数一律无默认指定值。
    //
    // 其中, m_dwState 可以为 0 和以下数值的组合:(0 表示该参数没有默认值,用户必须提供该参数)
    //
    //   AS_HAS_DEFAULT_VALUE      = 1;  // 本参数有默认值,默认值在m_nDefault中说明,与下标志互斥
    //   AS_DEFAULT_VALUE_IS_EMPTY = 2;  // 本参数有默认值,默认值为空,与上标志互斥
    //
    //   (下面5个标志位只能取其一)
    //   AS_RECEIVE_VAR            = 4;  // 为本参数提供数据时必须提供非数组型容器
    //   AS_RECEIVE_VAR_ARRAY      = 8;  // 为本参数提供数据时必须提供数组型容器
    //   AS_RECEIVE_VAR_OR_ARRAY   = 16; // 为本参数提供数据时必须提供数组或非数组型容器
    //   AS_RECEIVE_ARRAY_DATA     = 32; // 为本参数提供数据时必须提供数组型数据
    //   AS_RECEIVE_ALL_TYPE_DATA  = 64; // 为本参数提供数据时可以提供非数组或数组数据
    //
    ////////////////////////////////////////////////////////////////////////////
  end;

const
  //////////////////////////////////////////////////////////////////////////////
  // 以下常量用于 ARG_INFO 结构中的 m_dwState 成员

  AS_HAS_DEFAULT_VALUE      = 1;  // 本参数有默认值,默认值在m_nDefault中说明,与下标志互斥
  AS_DEFAULT_VALUE_IS_EMPTY = 2;  // 本参数有默认值,默认值为空,与上标志互斥

  //(下面5个标志位只能取其一)
  AS_RECEIVE_VAR            = 4;  // 为本参数提供数据时必须提供非数组型容器(!!!注意:必须是“容器(变量)”,而不能是类似123,"abc"的数据。下同。  ——liigo注)
  AS_RECEIVE_VAR_ARRAY      = 8;  // 为本参数提供数据时必须提供数组型容器
  AS_RECEIVE_VAR_OR_ARRAY   = 16; // 为本参数提供数据时必须提供数组或非数组型容器
  AS_RECEIVE_ARRAY_DATA     = 32; // 为本参数提供数据时必须提供数组型数据
  AS_RECEIVE_ALL_TYPE_DATA  = 64; // 为本参数提供数据时可以提供非数组或数组数据

  //////////////////////////////////////////////////////////////////////////////

type
  //////////////////////////////////////////////////////////////////////////////
  // “命令信息”数据结构 CMD_INFO

  pCMD_INFO = ^CMD_INFO;
  CMD_INFO  = record
    m_szName         : PChar;     // 命令中文名称
    m_szEGName       : PChar;     // 命令英文名称,可以为空或nil
    m_szExplain      : PChar;     // 命令详细解释
    m_shtCategory    : {Word}SmallInt;      // 全局命令的所属类别,从1开始,减一后的值为指向LIB_INFO的m_szzCategory成员所提供的某个类别字符串的索引; 对象成员命令的此值为-1
    m_wState         : Word;      // 命令状态,见后面的说明及常量定义
    m_dtRetType      : DATA_TYPE; // 返回值类型(!!!!! 千万注意:如果返回值类型定义为_SDT_ALL,绝对不能返回数组(即CT_RETURN_ARRAY_DATA置位)或复合数据类型的数据(即用户或库自定义数据类型但不包含窗口或菜单单元),因为用户程序无法自动删除复合类型中所分配的额外空间(如文本型或者字节集型成员等))
    m_wReserved      : Word;      // 保留,必须为0
    m_shtUserLevel   : Word;      // 难度等级,取值1,2,3,分别代表“初-中-高”级;见后面的说明及常量定义
    m_shtBitmapIndex : Word;      // 指定图像索引,从1开始,0表示无。减一后的值为指向支持库中名为"LIB_BITMAP"的BITMAP资源中某一部分16X13位图的索引
    m_shtBitmapCount : Word;      // 图像数目(用作为IDE提供动画图片)
    m_nArgCount      : LongWord;  // 命令的参数数目
    m_pBeginArgInfo  : pARG_INFO; // 指向本命令的参数定义信息数组

    ////////////////////////////////////////////////////////////////////////////
    //
    // 其中, m_wState 取 0 或以下值的组合:(0 表示该命令为正常命令)
    //   CT_IS_HIDED                = 4;  // 本命令是否为隐含命令(即不需要由用户直接输入的命令(如循环结束命令)或被废弃但为了保持兼容性又要存在的命令)
    //   CT_IS_ERROR                = 8;  // 本命令在本库中不能使用,具有此标志一定隐含,主要用作在不同语言版本的相同库中使用,即:A命令在A语言版本库中可能需要实现并使用,但在B语言版本库中可能就不需要。如果程序中使用了具有此标志的命令,则只能支持该程序调入和编译,而不能支持运行。如具有此标志,可以不实现本命令的执行部分。
    //   CT_DISABLED_IN_RELEASE_VER = 16; // 具有本标志的命令在易语言系统编译RELEASE版易程序时将被跳过,本类型命令必须无返回值
    //   CT_ALLOW_APPEND_NEW_ARG    = 32; // 在本命令的参数表的末尾是否可以添加新的参数,新参数等同于参数表中的最后一个参数
    //   CT_RETURN_ARRAY_DATA       = 64; // 用于说明m_dtRetType,是否返回数组数据
    //
    // 其中, m_shtUserLevel 取以下值之一:
    //   LVL_SIMPLE    = 1;               // 初级
    //   LVL_SECONDARY = 2;               // 中级
    //   LVL_HIGH      = 3;               // 高级
    //
    // !!!!! 千万注意:如果返回值类型(m_dtRetType)定义为 _SDT_ALL ,
    // 绝对不能返回数组(即CT_RETURN_ARRAY_DATA置位)或复合数据类型的数据(即用户或库自定义数据类型但不包含窗口或菜单单元),
    // 因为用户程序无法自动删除复合类型中所分配的额外空间(如文本型或者字节集型成员等) !!!!!
    //
    ////////////////////////////////////////////////////////////////////////////
  end;

const
  //////////////////////////////////////////////////////////////////////////////
  // 以下常量用于 CMD_INFO 结构的 m_wState 和 m_shtUserLevel 成员中:

  // 命令状态(m_wState)
  CT_IS_HIDED                = 4;  // 本命令是否为隐含命令(即不需要由用户直接输入的命令(如循环结束命令)或被废弃但为了保持兼容性又要存在的命令)
  CT_IS_ERROR                = 8;  // 本命令在本库中不能使用,具有此标志一定隐含,主要用作在不同语言版本的相同库中使用,即:A命令在A语言版本库中可能需要实现并使用,但在B语言版本库中可能就不需要。如果程序中使用了具有此标志的命令,则只能支持该程序调入和编译,而不能支持运行。如具有此标志,可以不实现本命令的执行部分。
  CT_DISABLED_IN_RELEASE_VER = 16; // 具有本标志的命令在易语言系统编译RELEASE版易程序时将被跳过,本类型命令必须无返回值
  CT_ALLOW_APPEND_NEW_ARG    = 32; // 在本命令的参数表的末尾是否可以添加新的参数,新参数等同于参数表中的最后一个参数
  CT_RETURN_ARRAY_DATA       = 64; // 用于说明m_dtRetType,是否返回数组数据

  // 命令的难度等级(m_shtUserLevel)
  LVL_SIMPLE    = 1;  // 初级
  LVL_SECONDARY = 2;  // 中级
  LVL_HIGH      = 3;  // 高级

  //////////////////////////////////////////////////////////////////////////////

const

  //////////////////////////////////////////////////////////////////////////////
  // 以下常量用作区分数据类型的类别

  DTM_SYS_DATA_TYPE_MASK  = $80000000;  // 系统定义数据类型
  DTM_USER_DATA_TYPE_MASK = $40000000;  // 用户定义数据类型
  DTM_LIB_DATA_TYPE_MASK  = $00000000;  // 库定义数据类型

  //////////////////////////////////////////////////////////////////////////////
  // DT_IS_ARY:在数据类型中的数组标志。如果某数据类型值此位置1,则表示为此数据类型的数组。
  // 本标志仅用作在运行时为具有AS_RECEIVE_VAR_OR_ARRAY或AS_RECEIVE_ALL_TYPE_DATA
  // 标志的库命令参数说明其为是否为数组数据,其他场合均未使用。因此其他地方均可以忽略本标志。

  DT_IS_ARY = $20000000;

type
  pLIB_DATA_TYPE_ELEMENT = ^LIB_DATA_TYPE_ELEMENT;
  LIB_DATA_TYPE_ELEMENT  = record
    m_dtDataType : DATA_TYPE ; // 本数据成员的数据类型。
    m_pArySpec   : ^BYTE;      // 如果本成员为数组,则本成员提供数组指定串,否则此值为NULL。数组指定串的格式为:首先为一个Byte记录该数组的维数(如果为0表示不为数组,最大值为0x7f),然后为对应数目的Integer值顺序记录对应维的元素数目。
    m_szName     : PChar;      // 本数据成员的名称,如果本数据成员所属的数据类型只有这一个数据成员,此值应该为NULL。
    m_szEGName   : PChar;      // 本数据成员的英文名称,可以为空或NULL。
    m_szExplain  : PChar;      // 本数据成员的详细说明。

    m_dwState    : LongWord;   // 状态值,指定本数据成员是否有默认值。见下面的常量定义(const LES_HAS_DEFAULT_VALUE = (1 shl 0);)。
    m_nDefault   : Integer;    // 默认值,仅当 m_dwState 包含 LES_HAS_DEFAULT_VALUE 标志且非数组时才有效。

    ////////////////////////////////////////////////////////////////////////////
    //
    // 关于数据成员的默认值(m_nDefault):
    //
    //   1、数值型:直接为数值(如为小数,只能指定其整数部分,如为长整数,只能指定不超过INT限值的部分);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -