Files
playbook/skills/tsl-api-reference/references/codegen/third/com.md
T

608 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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初始化
<!-- tags: COM OLE 自动化 -->
返回:any
### 示例
```tsl
return coInitialize();
// 输出:0
```
## `coUnInitialize()`
声明:function
Ole结束
<!-- tags: COM OLE 自动化 -->
返回:any
### 示例
```tsl
coInitialize();
return coUnInitialize();
// 输出:0
```
## `createComObject(guid, obj)`
声明:function
创建COM对象。如果创建成功则返回真,否则返回假
<!-- tags: COM 创建 生成 OLE 自动化 -->
| 参数 | 类型 | 说明 |
| ------ | ------ | ---------------- |
| `guid` | string | 对象的类GUID串。 |
| `obj` | comobj | 保存创建的对象。 |
返回:bool
### 示例
```tsl
obj := nil;
return createComObject('{EE09B103-97E0-11CF-978F-00A02463E06F}', obj);
// 输出:1
```
## `cverr(v)`
声明:function
将 COM 错误号转为携带该错误号的特殊 `NAN` 数据
<!-- tags: COM OLE 自动化 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 位
<!-- tags: COM 获取 查询 OLE 自动化 NAN -->
使用 `.& 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对象类型
<!-- tags: COM 获取 查询 OLE 自动化 -->
| 参数 | 类型 | 说明 |
| ------------ | ------- | ------------------------------------------------------------------------------------------------------------- |
| `class_name` | string | 字符串,对象的类名。 |
| `method` | integer | 整数,产生方法的方法,1:获取一个存在的对象,2:新建一个对象,其他值:如果存在则获取一个存在对象,不存在则创建。 |
| `obj` | comobj | 保存返回的对象。 |
返回:bool
### 示例
```tsl
obj := nil;
return getOleObject('Scripting.Dictionary', 2, obj);
// 输出:1
```
## `TSExpert.CoExec`
声明:class
天软客户端 COM 自动化接口
<!-- tags: COM OLE 自动化 -->
以下调用项是该接口的实例方法和属性,不是 TSL 全局函数
### `adminCommand(command, timeout, no_data_timeout, recv_string, broad_string, err_msg)`
声明:function
提交管理员命令
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ----------------- | ---------- | -------------------------------- |
| `command` | widestring | 提交的管理员命令串 |
| `timeout` | integer | 命令超时的毫秒数 |
| `no_data_timeout` | integer | 收到首个数据后无数据等待的毫秒数 |
| `recv_string` | olevariant | 输出参数,返回命令结果串 |
| `broad_string` | olevariant | 输出参数,返回广播消息串 |
| `err_msg` | olevariant | 输出参数,发生错误时返回错误信息 |
返回:olevariant
返回 `0` 表示成功,其他值为错误码
### `getSysParam(param_name)`
声明:function
返回系统参数的值
<!-- tags: COM 返回 获取 OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ------------ | ---------- | ---------- |
| `param_name` | widestring | 系统参数名 |
返回:olevariant
### `localCallFunc(func_name, params)`
声明:function
利用本地解释器执行一个函数
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ----------- | ---------- | --------------------------- |
| `func_name` | widestring | 需要调用的函数名 |
| `params` | olevariant | 保存调用参数的 Variant 数组 |
返回:olevariant
### `localExecute(execute_str)`
声明:function
利用本地解释器执行一段 TSL 脚本
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ------------- | ---------- | -------------- |
| `execute_str` | widestring | 需要执行的脚本 |
返回:olevariant
### `remoteCallFunc(func_name, params)`
声明:function
利用平台执行一个函数
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ----------- | ---------- | --------------------------- |
| `func_name` | widestring | 需要调用的函数名 |
| `params` | olevariant | 保存调用参数的 Variant 数组 |
返回:olevariant
### `remoteExecute(execute_str)`
声明:function
利用平台执行一段 TSL 脚本
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ------------- | ---------- | -------------- |
| `execute_str` | widestring | 需要执行的脚本 |
返回:olevariant
### `resetSysParam()`
声明:function
清除重置系统参数
<!-- tags: COM 清除 重置 OLE 自动化 -->
可见性:`public`
时间重置为当前时间,证券重置为上证指数,周期重置为日线,复权类型重置为不复权,复权基准日重置为 `0`,保留小数位数重置为 `4`,股票列表和时间列表重置为空
### `setSysParam(param_name, param_value)`
声明:function
设置系统参数,对本地执行和平台执行均有效
<!-- tags: COM 设置 修改 OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ------------- | ---------- | -------------- |
| `param_name` | widestring | 系统参数名 |
| `param_value` | olevariant | 要设置的参数值 |
### `simplyAdminCommand(command, timeout, no_data_timeout)`
声明:function
提交管理员命令并返回命令结果串
<!-- tags: COM OLE 自动化 -->
可见性:`public`
| 参数 | 类型 | 说明 |
| ----------------- | ---------- | -------------------------------- |
| `command` | widestring | 提交的管理员命令串 |
| `timeout` | integer | 命令超时的毫秒数 |
| `no_data_timeout` | integer | 收到首个数据后无数据等待的毫秒数 |
返回:olevariant
### `bk`
声明:property
获取或设置默认板块系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:widestring
访问:read / write
### `bks`
声明:property
板块组参数,批量调用时使用;取消批量板块时设置 `bk`
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:olevariant
访问:read / write
### `computeBitsOption`
声明:property
计算位数选项,`0` 表示自动选择,`1` 表示 32 位服务器,`2` 表示 64 位服务器
<!-- tags: COM 计算 求解 OLE 自动化 -->
可见性:`public`
类型:byte
访问:read / write
### `computeService`
声明:property
计算服务群组,空字符串表示默认服务,`auto` 表示自动选择,其他值表示指定服务群组
<!-- tags: COM 计算 求解 OLE 自动化 -->
可见性:`public`
类型:string
访问:read / write
### `cycle`
声明:property
获取或设置当前周期系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:widestring
访问:read / write
### `i64Trans`
声明:property
TSL `Int64` 到 COM 的转换规则:`0` 转为 64 位整数,`1` 转为 32 位整数,`2` 转为双精度浮点数
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `keepRawData`
声明:property
二维数据转换规则:`0` 将单行和单列转为一维数组,`1` 保留原始结构,`2` 仅转换单列,`3` 仅转换单行
<!-- tags: COM 转换 编码 OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `logined`
声明:property
指示是否已经登录成功
<!-- tags: COM 连接 登录 OLE 自动化 -->
可见性:`public`
类型:olevariant
访问:read
### `nDay`
声明:property
获取或设置`NDAY` 默认返回的点数系统参数
<!-- tags: COM 获取 查询 OLE 自动化 NDAY -->
可见性:`public`
类型:integer
访问:read / write
### `nilTrans`
声明:property
获取或设置TSL `NIL` 到 COM 的转换规则
<!-- tags: COM 获取 查询 OLE 自动化 NIL -->
可见性:`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
返回结果保留的小数位数
<!-- tags: COM 返回 获取 OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `rate`
声明:property
获取或设置当前复权类型系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `rateDay`
声明:property
获取或设置复权基准日系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:tdatetime
访问:read / write
### `resultFileName`
声明:property
结果文件名,非空时将结果写入文件;扩展名为 `.csv``.xml` 时使用对应格式,其他扩展名使用 Excel 格式
<!-- tags: COM 写入 保存 OLE 自动化 -->
可见性:`public`
类型:widestring
访问:read / write
### `standardArray`
声明:property
标准数组返回类型:`0` 表示任意类型,`1` 表示浮点数组,`2` 表示字符串数组,`3` 表示整数数组
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `stock`
声明:property
获取或设置当前证券代码系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:widestring
访问:read / write
### `stocks`
声明:property
股票组参数,批量调用时使用;取消批量证券时设置 `stock`
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:olevariant
访问:read / write
### `textResult`
声明:property
文本结果模式,设置为 `1` 时将任意返回值转换为 TSL 可解析的数据结构文本
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:integer
访问:read / write
### `time`
声明:property
获取或设置当前环境时间系统参数
<!-- tags: COM 获取 查询 OLE 自动化 -->
可见性:`public`
类型:tdatetime
访问:read / write
### `times`
声明:property
时间组参数,批量调用时使用;取消批量时间时设置 `time`
<!-- tags: COM OLE 自动化 -->
可见性:`public`
类型:olevariant
访问:read / write