# Third / COM 以下为调用第三方运行环境或外部组件的函数。 本页提供 COM 运行环境初始化和按 GUID 创建 COM 对象的函数。 下文创建 COM 对象的示例使用 Windows 自带的 `Scripting.Dictionary`,不会启动 Excel 等桌面程序。 在 COM 模式下(例如通过 Excel COM 对象操作 XLS 文件),COM 的 `ERROR` 类型和 TSL 之间按以下规则转换: - COM 转 TSL:`ERROR` 转为特殊的 `NAN`,可用 `cverrget` 取回错误号。 - TSL 转 COM:用 `cverr` 把错误号转为携带该错误号的特殊 `NAN`。 ## `coInitialize()` 声明:function Ole初始化 返回:any ### 示例 ```tsl return coInitialize(); // 输出:0 ``` ## `coUnInitialize()` 声明:function Ole结束 返回:any ### 示例 ```tsl coInitialize(); return coUnInitialize(); // 输出:0 ``` ## `createComObject(guid, obj)` 声明:function 创建COM对象。如果创建成功则返回真,否则返回假 | 参数 | 类型 | 说明 | | ------ | ------ | ---------------- | | `guid` | string | 对象的类GUID串。 | | `obj` | comobj | 保存创建的对象。 | 返回:bool ### 示例 ```tsl obj := nil; return createComObject('{EE09B103-97E0-11CF-978F-00A02463E06F}', obj); // 输出:1 ``` ## `cverr(v)` 声明:function 将 COM 错误号转为携带该错误号的特殊 `NAN` 数据 这些错误号由 Excel 定义。常见值包括: - `0x800A07D7`:`#DIV/0!` - `0x800A07FA`:`#N/A` - `0x800A07ED`:`#NAME?` - `0x800A07D0`:`#NULL!` - `0x800A07F4`:`#NUM!` - `0x800A07E7`:`#REF!` - `0x800A07DF`:`#VALUE!` 在 AnalyseNG.NET 的 `excelSetCell` 或 `excelSetCells` 中,系统会自动把普通 `NAN` 和 `INF` 转为相应的 Excel 错误;由 `cverr` 生成的特殊 `NAN` 会保留指定错误号。 | 参数 | 类型 | 说明 | | ---- | ----- | ---- | | `v` | int64 | | 返回:real ### 示例 ```tsl return cverr(0x800A07E7); // 输出:NAN ``` ## `cverrget(v)` 声明:function 获取特殊 `NAN` 中的 COM 错误号。返回值的高位不确定,只应使用低 32 位 使用 `.& 0xFFFFFFFFL` 取低 32 位;不带 `L` 的 `0xFFFFFFFF` 会被解释为 `-1`,无法清除高位。 | 参数 | 类型 | 说明 | | ---- | ------ | ---- | | `v` | double | | 返回:int64 ### 示例 ```tsl error_value := cverr(0x800A07E7); return cverrget(error_value) .& 0xFFFFFFFFL; // 输出:2148141031 ``` ## `getOleObject(class_name, method, obj)` 声明:function 获取一个ComObj对象类型 | 参数 | 类型 | 说明 | | ------------ | ------- | ------------------------------------------------------------------------------------------------------------- | | `class_name` | string | 字符串,对象的类名。 | | `method` | integer | 整数,产生方法的方法,1:获取一个存在的对象,2:新建一个对象,其他值:如果存在则获取一个存在对象,不存在则创建。 | | `obj` | comobj | 保存返回的对象。 | 返回:bool ### 示例 ```tsl obj := nil; return getOleObject('Scripting.Dictionary', 2, obj); // 输出:1 ``` ## `TSExpert.CoExec` 声明:class 天软客户端 COM 自动化接口 以下调用项是该接口的实例方法和属性,不是 TSL 全局函数 ### `adminCommand(command, timeout, no_data_timeout, recv_string, broad_string, err_msg)` 声明:function 提交管理员命令 可见性:`public` | 参数 | 类型 | 说明 | | ----------------- | ---------- | -------------------------------- | | `command` | widestring | 提交的管理员命令串 | | `timeout` | integer | 命令超时的毫秒数 | | `no_data_timeout` | integer | 收到首个数据后无数据等待的毫秒数 | | `recv_string` | olevariant | 输出参数,返回命令结果串 | | `broad_string` | olevariant | 输出参数,返回广播消息串 | | `err_msg` | olevariant | 输出参数,发生错误时返回错误信息 | 返回:olevariant 返回 `0` 表示成功,其他值为错误码 ### `getSysParam(param_name)` 声明:function 返回系统参数的值 可见性:`public` | 参数 | 类型 | 说明 | | ------------ | ---------- | ---------- | | `param_name` | widestring | 系统参数名 | 返回:olevariant ### `localCallFunc(func_name, params)` 声明:function 利用本地解释器执行一个函数 可见性:`public` | 参数 | 类型 | 说明 | | ----------- | ---------- | --------------------------- | | `func_name` | widestring | 需要调用的函数名 | | `params` | olevariant | 保存调用参数的 Variant 数组 | 返回:olevariant ### `localExecute(execute_str)` 声明:function 利用本地解释器执行一段 TSL 脚本 可见性:`public` | 参数 | 类型 | 说明 | | ------------- | ---------- | -------------- | | `execute_str` | widestring | 需要执行的脚本 | 返回:olevariant ### `remoteCallFunc(func_name, params)` 声明:function 利用平台执行一个函数 可见性:`public` | 参数 | 类型 | 说明 | | ----------- | ---------- | --------------------------- | | `func_name` | widestring | 需要调用的函数名 | | `params` | olevariant | 保存调用参数的 Variant 数组 | 返回:olevariant ### `remoteExecute(execute_str)` 声明:function 利用平台执行一段 TSL 脚本 可见性:`public` | 参数 | 类型 | 说明 | | ------------- | ---------- | -------------- | | `execute_str` | widestring | 需要执行的脚本 | 返回:olevariant ### `resetSysParam()` 声明:function 清除重置系统参数 可见性:`public` 时间重置为当前时间,证券重置为上证指数,周期重置为日线,复权类型重置为不复权,复权基准日重置为 `0`,保留小数位数重置为 `4`,股票列表和时间列表重置为空 ### `setSysParam(param_name, param_value)` 声明:function 设置系统参数,对本地执行和平台执行均有效 可见性:`public` | 参数 | 类型 | 说明 | | ------------- | ---------- | -------------- | | `param_name` | widestring | 系统参数名 | | `param_value` | olevariant | 要设置的参数值 | ### `simplyAdminCommand(command, timeout, no_data_timeout)` 声明:function 提交管理员命令并返回命令结果串 可见性:`public` | 参数 | 类型 | 说明 | | ----------------- | ---------- | -------------------------------- | | `command` | widestring | 提交的管理员命令串 | | `timeout` | integer | 命令超时的毫秒数 | | `no_data_timeout` | integer | 收到首个数据后无数据等待的毫秒数 | 返回:olevariant ### `bk` 声明:property 获取或设置默认板块系统参数 可见性:`public` 类型:widestring 访问:read / write ### `bks` 声明:property 板块组参数,批量调用时使用;取消批量板块时设置 `bk` 可见性:`public` 类型:olevariant 访问:read / write ### `computeBitsOption` 声明:property 计算位数选项,`0` 表示自动选择,`1` 表示 32 位服务器,`2` 表示 64 位服务器 可见性:`public` 类型:byte 访问:read / write ### `computeService` 声明:property 计算服务群组,空字符串表示默认服务,`auto` 表示自动选择,其他值表示指定服务群组 可见性:`public` 类型:string 访问:read / write ### `cycle` 声明:property 获取或设置当前周期系统参数 可见性:`public` 类型:widestring 访问:read / write ### `i64Trans` 声明:property TSL `Int64` 到 COM 的转换规则:`0` 转为 64 位整数,`1` 转为 32 位整数,`2` 转为双精度浮点数 可见性:`public` 类型:integer 访问:read / write ### `keepRawData` 声明:property 二维数据转换规则:`0` 将单行和单列转为一维数组,`1` 保留原始结构,`2` 仅转换单列,`3` 仅转换单行 可见性:`public` 类型:integer 访问:read / write ### `logined` 声明:property 指示是否已经登录成功 可见性:`public` 类型:olevariant 访问:read ### `nDay` 声明:property 获取或设置`NDAY` 默认返回的点数系统参数 可见性:`public` 类型:integer 访问:read / write ### `nilTrans` 声明:property 获取或设置TSL `NIL` 到 COM 的转换规则 可见性:`public` 类型:integer 访问:read / write 取值规则: - `0` — `Unassigned` - `1` — `Empty` - `2` — `NULL` - `3` — `NAN` - `4` — 整数 `0` - `5` — 浮点数 `0` - `6` — 空字符串 - `7` — 字符串 `NIL` - `8` — 字符串 `NULL` - `9` — 字符串 `-` - `10` — 字符串 `/` 其他值转换为 `Unassigned` ### `precision` 声明:property 返回结果保留的小数位数 可见性:`public` 类型:integer 访问:read / write ### `rate` 声明:property 获取或设置当前复权类型系统参数 可见性:`public` 类型:integer 访问:read / write ### `rateDay` 声明:property 获取或设置复权基准日系统参数 可见性:`public` 类型:tdatetime 访问:read / write ### `resultFileName` 声明:property 结果文件名,非空时将结果写入文件;扩展名为 `.csv` 或 `.xml` 时使用对应格式,其他扩展名使用 Excel 格式 可见性:`public` 类型:widestring 访问:read / write ### `standardArray` 声明:property 标准数组返回类型:`0` 表示任意类型,`1` 表示浮点数组,`2` 表示字符串数组,`3` 表示整数数组 可见性:`public` 类型:integer 访问:read / write ### `stock` 声明:property 获取或设置当前证券代码系统参数 可见性:`public` 类型:widestring 访问:read / write ### `stocks` 声明:property 股票组参数,批量调用时使用;取消批量证券时设置 `stock` 可见性:`public` 类型:olevariant 访问:read / write ### `textResult` 声明:property 文本结果模式,设置为 `1` 时将任意返回值转换为 TSL 可解析的数据结构文本 可见性:`public` 类型:integer 访问:read / write ### `time` 声明:property 获取或设置当前环境时间系统参数 可见性:`public` 类型:tdatetime 访问:read / write ### `times` 声明:property 时间组参数,批量调用时使用;取消批量时间时设置 `time` 可见性:`public` 类型:olevariant 访问:read / write