608 lines
12 KiB
Markdown
608 lines
12 KiB
Markdown
# 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
|