1599 lines
33 KiB
Markdown
1599 lines
33 KiB
Markdown
#### 系统相关函数
|
||
|
||
##### 内容
|
||
|
||
- 数据类型函数
|
||
- 数据类型转换函数
|
||
- 复制函数
|
||
- 随机函数
|
||
- 条件选择函数
|
||
- 表达式相关函数
|
||
- 性能优化相关函数
|
||
- 函数库路径
|
||
- 调用堆栈
|
||
|
||
##### 数据类型函数
|
||
|
||
###### 内容
|
||
|
||
- DataType
|
||
- ifInt
|
||
- ifInt64
|
||
- ifReal
|
||
- ifNumber
|
||
- ifString
|
||
- ifArray
|
||
- ifNil
|
||
- ifExp
|
||
- ifGraph
|
||
- ifGraphGroup
|
||
- ifBinary
|
||
- ifMatrix
|
||
- ifObj
|
||
- GetOleObject
|
||
- CreateComObject
|
||
- CreateMatrix
|
||
- MatrixToArray
|
||
- GetMatrixFields
|
||
- CreateBinary
|
||
- ConvertDataToBuf
|
||
- ConvertBufToData
|
||
- None类型
|
||
|
||
###### DataType
|
||
|
||
用途:返回数据类型编号,支持数组遍历模式。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:类型编号或类型数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为数组型变量时,返回数组类型对应的整数5。
|
||
a := array(34, 12); // 定义a为一个数组
|
||
result := DataType(a);
|
||
return result; // 5
|
||
|
||
// 当参数为整数型变量时,返回整数类型对应的整数0。
|
||
a := 23; // 定义a为一个整数
|
||
result := DataType(a);
|
||
return result; // 0
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.14, "A", (1, 2, 3), nil);
|
||
return DataType(t, -1);
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.14, "A", (1, 2, 3), nil);
|
||
return DataType(t, 1);
|
||
```
|
||
|
||
###### ifInt
|
||
|
||
用途:判断是否为 32 位整数类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
// 判断是否为32位整数类型
|
||
r1 := ifInt(1);
|
||
r2 := ifInt(3.14);
|
||
r3 := ifInt("A");
|
||
r4 := ifInt(array(1, 2, 3));
|
||
return array(r1, r2, r3, r4);
|
||
// 结果:array(1,0,0,0)
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.14, "A", (1, 2, 3), nil);
|
||
return ifInt(t, -1);
|
||
// 结果:array(1,0,0,0,0)
|
||
```
|
||
|
||
范例三:
|
||
|
||
```tsl
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.14, "A", (1, 2.1, 3), nil);
|
||
return ifInt(t, 1);
|
||
// 结果:array(1,0,0,(1,0,1),0)
|
||
```
|
||
|
||
###### ifInt64
|
||
|
||
用途:判断是否为 64 位整数类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为整数类型变量时,返回true。
|
||
a := 23L; // 定义a为一个64位整数
|
||
return ifInt64(a);
|
||
|
||
// 当参数为非整数型变量时,返回false。
|
||
a := 2.3; // 定义a为一个非64位整数
|
||
return ifInt64(a);
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3L, "A", (1, 2, 3), nil);
|
||
return ifInt64(t, -1);
|
||
// 结果:array(0,1,0,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3L, "A", (1, 2L, 3), nil);
|
||
return ifInt64(t, 1);
|
||
// 结果:array(0,1,0,(0,1,0),0)
|
||
```
|
||
|
||
###### ifReal
|
||
|
||
用途:判断是否为 实数类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为实数类型变量时,返回true。
|
||
a := 2.233; // 定义a为一个实数
|
||
result := ifReal(a);
|
||
return result;
|
||
|
||
// 当参数为非整数型变量时,返回false。
|
||
a := array(23, 54, 67); // 定义a为一个非实数
|
||
result := ifReal(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.56, "A", (1, 2, 3), nil);
|
||
return ifReal(t, -1);
|
||
// 结果:array(0,1,0,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.56, "A", (1, 2.14, 3), nil);
|
||
return ifReal(t, 1);
|
||
// 结果:array(0,1,0,(0,1,0),0)
|
||
```
|
||
|
||
###### ifNumber
|
||
|
||
用途:判断是否为 数字(整数或实数)类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为数字类型(整数或者实数)变量时,返回true。
|
||
a := 2.233; // 定义a为一个实数
|
||
result := ifNumber(a);
|
||
return result;
|
||
|
||
// 当参数为非数字类型(整数或者实数)变量时,返回false。
|
||
a := array(23, 54, 67); // 定义a为一个非数字类型
|
||
result := ifNumber(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.56, "A", (1, 2, 3), nil);
|
||
return ifNumber(t, -1);
|
||
// 结果:array(1,1,0,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断,nan也为数字类型
|
||
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
|
||
return ifNumber(t, 1);
|
||
// 结果:array(1,1,0,(1,1,0),0)
|
||
```
|
||
|
||
###### ifString
|
||
|
||
用途:判断是否为 字符串类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为字符串类型变量时,返回true。
|
||
a := 'test'; // 定义a为一个字符串
|
||
result := ifString(a);
|
||
return result;
|
||
|
||
// 当参数为非字符串类型变量时,返回false。
|
||
a := array(23, 54, 67); // 定义a为一个非字符串
|
||
result := ifString(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.56, "A", (1, 2, 3), nil);
|
||
return ifString(t, -1);
|
||
// 结果:array(0,0,1,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
|
||
return ifString(t, 1);
|
||
// 结果:array(0,0,1,(0,0,1),0)
|
||
```
|
||
|
||
###### ifArray
|
||
|
||
用途:判断是否为 数组类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为数组类型变量时,返回true。
|
||
a := array(23, 54, 67); // 定义a为一个数组
|
||
result := ifArray(a);
|
||
return result;
|
||
|
||
// 当参数为非数组类型变量时,返回false。
|
||
a := 34; // 定义a为一个非数组
|
||
result := ifArray(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.56, "A", (1, "C", 3.14), nil);
|
||
return ifArray(t, -1);
|
||
// 结果:array(0,0,0,1,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.56, "A", (nan, 2.14, "C"), nil);
|
||
return ifArray(t, 1);
|
||
// 结果:array(0,0,0,(0,0,0),0)
|
||
```
|
||
|
||
###### ifNil
|
||
|
||
用途:判断是否为 Nil类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数为空时,返回true。
|
||
result := ifNil(nil); // 函数参数为空
|
||
return result;
|
||
|
||
// 当参数不为空时,返回false。
|
||
a := 34; // 函数参数不为空
|
||
result := ifNil(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.16, "A", (nil, "C", 3.14), nil);
|
||
return ifNil(t, -1);
|
||
// 结果:array(0,0,0,0,1)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.56, "A", (nil, 2.14, "C"), nil);
|
||
return ifNil(t, 1);
|
||
// 结果:array(0,0,0,(1,0,0),1)
|
||
```
|
||
|
||
###### ifExp
|
||
|
||
用途:判断是否为 表达式类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个表达式类型时,返回true。
|
||
a := @'dfhdv' + 'dbf'; // 函数参数a为一个表达式
|
||
result := ifExp(a);
|
||
return result;
|
||
|
||
// 当参数不是一个表达式类型时,返回false。
|
||
a := 'sdhv' + 'dbf'; // 函数参数a不为表达式
|
||
result := ifExp(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
t := array(1, 3.16, @"A", (nil, @"C", 3.14), nil);
|
||
return ifExp(t, -1);
|
||
// 结果:array(0,0,1,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
t := array(1, 3.56, @"A", (nil, 2.14, @"C"), nil);
|
||
return ifExp(t, 1);
|
||
// 结果:array(0,0,1,(0,0,1),0)
|
||
```
|
||
|
||
###### ifGraph
|
||
|
||
用途:判断是否为 图形类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个图形类型时,返回true。
|
||
GData := Nday2('MA5', MA( close() , 5 ) );
|
||
g1 := graph( gtLine() , "MA5", Gdata , gfColor() , clBlue() );
|
||
result := ifGraph(g1);
|
||
return result;
|
||
|
||
// 当参数不是一个图形类型时,返回false。
|
||
a := 'sdhv' + 'dbf'; // 函数参数a不为图形类型
|
||
result := ifGraph(a);
|
||
return result;
|
||
```
|
||
|
||
参考TGraph
|
||
|
||
###### ifGraphGroup
|
||
|
||
用途:判断是否为 图形组类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个图形组合类型时,返回true。
|
||
VolData := Nday2(GfVol() , Vol() , gfColor() , ifthen ( Close() > Open() , ClRed() , ClGreen() ) );
|
||
MAVOL := Nday2('MA5', MA ( Vol() , 5 ) );
|
||
VOLGraph := Graph(gtBar(), 'VOLGraph', VolData);
|
||
MAVOLGraph := Graph(gtLine(), 'MA5Graph', MAVOL, gfColor(), clBlue());
|
||
g1 := GraphGroup(VOLGraph, MAVOLGraph, gfMinValue(), 0);
|
||
// 调用函GraphGroup创建一个图形组合类型变量g1
|
||
result := ifGraphGroup(g1);
|
||
return result;
|
||
|
||
GData := Nday2('MA5', MA( close() , 5 ) );
|
||
g1 := graph( gtLine() , "MA5", Gdata , gfColor() , clBlue() );
|
||
result := ifGraphGroup(g1);
|
||
return result;
|
||
// 返回0
|
||
```
|
||
|
||
参考TGraphGroup
|
||
|
||
###### ifBinary
|
||
|
||
用途:判断是否为 二进制/Buffer类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个二进制类型时,返回true。
|
||
a := binary('111111'); // 函数参数a为二进制类型
|
||
result := ifBinary(a);
|
||
return result;
|
||
|
||
// 当参数不是一个二进制类型时,返回false。
|
||
a := 'sdhv'; // 函数参数a不为二进制类型
|
||
result := ifBinary(a);
|
||
return result;
|
||
|
||
// 对数组第一维度数据进行类型判断
|
||
b := Binary("3.14");
|
||
t := array(1, b, "A", (nil, b, 3.14), nil);
|
||
return ifBinary(t, -1);
|
||
// 结果:array(0,1,0,0,0)
|
||
|
||
// 对数组中每一数据进行类型判断
|
||
b := Binary("3.14");
|
||
t := array(1, b, "A", (nil, 2.14, b), nil);
|
||
return ifBinary(t, 1);
|
||
// 结果:array(0,1,0,(0,0,1),0)
|
||
```
|
||
|
||
参考Binary
|
||
|
||
###### ifMatrix
|
||
|
||
用途:判断是否为 Matrix类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个Matrix类型时,返回true。
|
||
a := CreateMatrix(3, 4); // 使用CreateMatrix创建一个Matrix类型变量
|
||
result := ifMatrix(a);
|
||
return result;
|
||
|
||
// 当参数不是一个Matrix类型时,返回false。
|
||
a := 'sdhv'; // 函数参数a不为Matrix类型
|
||
result := ifMatrix(a);
|
||
return result;
|
||
```
|
||
|
||
###### ifObj
|
||
|
||
用途:判断是否为对象类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:遍历模式(可选;-1 对第一维逐项判断;1 对每个元素判断)
|
||
返回:布尔值或布尔数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 当参数是一个对象类型时,返回true。
|
||
type Function14 = class()//声明类
|
||
function SetName(newName);
|
||
begin
|
||
name := newName;
|
||
end;
|
||
end;
|
||
Obj := CreateObject('Function14'); // 使用CreateObject函数创建上面类Function14的对象
|
||
result := ifObj(Obj);
|
||
return result;
|
||
|
||
// 当参数不是一个对象类型时,返回false。
|
||
a := 'sdhv'; // 函数参数a不为对象类型
|
||
result := ifObj(a);
|
||
return result;
|
||
```
|
||
|
||
参考ComObj
|
||
|
||
###### GetOleObject
|
||
|
||
用途:获取已注册的 OLE/COM 对象实例(仅 Windows)。
|
||
参数:
|
||
|
||
- prog_id:COM ProgID(如 "Word.Application")
|
||
- flags:选项标记(可选,通常为 0)
|
||
- out_obj:输出对象变量
|
||
返回:是否获取成功(1/0)。
|
||
|
||
###### CreateComObject
|
||
|
||
用途:创建新的 OLE/COM 对象实例(仅 Windows)。
|
||
参数:
|
||
|
||
- prog_id:COM ProgID(如 "Word.Application")
|
||
返回:COM 对象实例;失败返回 nil。
|
||
|
||
说明:COM 对象仅在 Windows 可用,Linux 不支持。
|
||
|
||
###### CreateMatrix
|
||
|
||
用途:创建 Matrix 类型数据,可指定列索引与初始值。
|
||
参数:
|
||
|
||
- rows:行数
|
||
- cols:列数
|
||
- cols_value:列序列(可选)
|
||
- values:初始化值序列(可选,按行列顺序)
|
||
返回:Matrix 对象。
|
||
|
||
范例
|
||
|
||
对比范例一与范例二,即Matrix与矩阵类型的比较
|
||
|
||
范例一:Matrix
|
||
|
||
```tsl
|
||
// 当没有ColsValue参数,返回的MATRIX的行和列的下标为从0开始的序列
|
||
return CreateMatrix(2, 3);
|
||
```
|
||
|
||
范例二:矩阵
|
||
|
||
```tsl
|
||
return nils(3, 2);
|
||
```
|
||
|
||
范例三:
|
||
|
||
```tsl
|
||
// 有ColsValue参数并初始化该Matrix时,返回的MATRIX的列序列为ColsValue数组中//的字符串或整数
|
||
return CreateMatrix(3, 4, array('s', 'd', 'f'), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
|
||
```
|
||
|
||
###### MatrixToArray
|
||
|
||
用途:将 Matrix 转换为数组。
|
||
参数:
|
||
|
||
- matrix:Matrix 数据
|
||
返回:数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 使用CreateMatrix创建一个Matrix,把这个Matrix转换为一个数组后返回该数组。
|
||
a := CreateMatrix(3, 4, array('s', 'd', 'f'), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
|
||
return MatrixToArray(a);
|
||
|
||
// 把TS的矩阵转化成Matrix类型数据
|
||
a := ones(5, 5);
|
||
return mselect * from a end;
|
||
```
|
||
|
||
###### GetMatrixFields
|
||
|
||
用途:获取 Matrix 的字段(列名)列表。
|
||
参数:
|
||
|
||
- matrix:Matrix 数据
|
||
返回:字段名数组。
|
||
|
||
###### CreateBinary
|
||
|
||
用途:创建 Binary 缓冲区。
|
||
参数:
|
||
|
||
- size:字节长度
|
||
返回:Binary 数据。
|
||
|
||
###### ConvertDataToBuf
|
||
|
||
用途:按指定类型将数据编码为内存 Buffer。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- type_name:类型名称
|
||
返回:Binary Buffer。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 将一个数据转换成内存存贮的BUFFER并返回
|
||
return ConvertDataToBuf(1.5343, 'Currency');
|
||
```
|
||
|
||
###### ConvertBufToData
|
||
|
||
用途:按指定类型将 Buffer 解码为数据。
|
||
参数:
|
||
|
||
- buffer:Binary Buffer
|
||
- type_name:类型名称
|
||
返回:解析后的数据。
|
||
|
||
###### None类型
|
||
|
||
None类型是一种极为特殊的特性,不参与运算,仅在特殊场景传递。None类型本身可以包含一个整数。
|
||
|
||
目前用于对象算符重载[]的数组设置算符时候,重载函数送入的第一个参数是索引值,第二个参数在非最后一级时设置为None类型,用于描述级别信息(最后一级送入的是要设置的值)。
|
||
|
||
####### 内容
|
||
|
||
- ifNone
|
||
- GetNone
|
||
|
||
####### ifNone
|
||
|
||
用途:判断是否为 None 类型。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
返回:布尔值。
|
||
|
||
具体应用可参考:FAQ:对象算符重载数组set算符时none类型的应用实例
|
||
|
||
####### GetNone
|
||
|
||
用途:获取 None 类型值(可携带整数标记)。
|
||
参数:
|
||
|
||
- tag:整数标记(可选)
|
||
返回:None 值。
|
||
|
||
具体应用可参考:FAQ:对象算符重载数组set算符时none类型的应用实例
|
||
|
||
##### 数据类型转换函数
|
||
|
||
###### 内容
|
||
|
||
- Integer
|
||
- Int64
|
||
- Real
|
||
- String
|
||
- WideString
|
||
- Binary
|
||
- SetPrecision
|
||
- ToSTM
|
||
- ToSTN
|
||
- ToXML
|
||
- STM
|
||
- STN
|
||
- XML
|
||
- ExportCsv
|
||
- ImportCsv
|
||
|
||
###### Integer
|
||
|
||
用途:将数值转换为整数。
|
||
参数:
|
||
|
||
- value:输入数值
|
||
|
||
返回:整数。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return Integer(123.456); // 返回值为整型数据:123。
|
||
```
|
||
|
||
###### Int64
|
||
|
||
用途:将数值转换为 64 位整数。
|
||
参数:
|
||
|
||
- value:输入数值
|
||
|
||
返回:64 位整数。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return Int64(123); // 返回值为64位整型数据:123。
|
||
```
|
||
|
||
###### Real
|
||
|
||
用途:将数值转换为实数。
|
||
参数:
|
||
|
||
- value:输入数值
|
||
|
||
返回:实数。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return Real(123); // 返回值为实数数据:123.00
|
||
```
|
||
|
||
###### String
|
||
|
||
用途:将数据转换为字符串。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
|
||
返回:字符串。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return String(L'abcd');
|
||
// 返回值为字符串:abcd。
|
||
```
|
||
|
||
###### WideString
|
||
|
||
用途:将数据转换为 Unicode 字符串。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
|
||
返回:Unicode 字符串。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return WideString('abcd');
|
||
// 返回值为Unicode字符串:L’abcd’。
|
||
```
|
||
|
||
###### Binary
|
||
|
||
用途:将数据转换为二进制流。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
|
||
返回:Binary 数据。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return Binary('111111'); // 返回值为二进制流。
|
||
```
|
||
|
||
###### SetPrecision
|
||
|
||
用途:设置数值的小数精度。
|
||
参数:
|
||
|
||
- value:输入数值
|
||
- digits:小数位数
|
||
|
||
返回:按精度处理后的数值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return SetPrecision(123.4567, 3); // 返回值为保留3位小数点后的实数:123.457。
|
||
```
|
||
|
||
###### ToSTM
|
||
|
||
用途:将数据序列化为 STM 二进制流。
|
||
参数:
|
||
|
||
- value:输入数据
|
||
- mode:序列化模式(可选)
|
||
- precision:小数位数(可选)
|
||
|
||
返回:STM 二进制流。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return ToSTM(array(1, 23, 4, 5, 6, 7, )); // 返回以.stm为后缀名的二进制文件。
|
||
```
|
||
|
||
可选参数的应用
|
||
|
||
```tsl
|
||
t := rand(4, 5);
|
||
s := ToSTM(t, 0, 1, 2); // 用新流模式,且保留两位小数
|
||
return stm(s);
|
||
```
|
||
|
||
返回如下:
|
||
|
||
###### ToSTN
|
||
|
||
用途:将数值格式化为 STN 字符串。
|
||
参数:
|
||
|
||
- value:输入数值
|
||
- digits:小数位数(可选)
|
||
|
||
返回:字符串。
|
||
|
||
范例
|
||
|
||
范例一:
|
||
|
||
```tsl
|
||
return ToSTN(12345); // 返回值为字符串:’12345’。
|
||
```
|
||
|
||
范例二:
|
||
|
||
```tsl
|
||
return ToSTN(1.2345, 2); // 返回值为字符串:’1.23’。
|
||
```
|
||
|
||
###### ToXML
|
||
|
||
用途:将数据转换为 XML 字符串表示。
|
||
参数:
|
||
|
||
- value:待转换的数据
|
||
|
||
返回:XML 字符串。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return ToXML("this is XML document");
|
||
// 返回值示例:
|
||
// <?xml version = "1.0"encoding = "GB2312"?>
|
||
// <TSXML Copyright = "Generated by ShenZhen Tinysoft Corp,Ltd. All rights reserved."type = "STRING"VALUE = "this is XML document" />
|
||
```
|
||
|
||
差异说明仅windows中支持,Linux中暂不支持。
|
||
|
||
###### STM
|
||
|
||
###### STN
|
||
|
||
###### XML
|
||
|
||
用途:解析 TSXML 字符串并返回内容。
|
||
参数:
|
||
|
||
- xml_text:TSXML 字符串
|
||
|
||
返回:解析结果值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return XML('<?xml version="1.0" encoding="GB2312"?>'
|
||
+ '<TSXML Copyright = "Generated by ShenZhen Tinysoft Corp,Ltd. All rights reserved."type = "STRING"VALUE = "this is XML document" /> ');
|
||
// 返回值示例:"this is a document"。
|
||
```
|
||
|
||
差异说明仅windows中支持,Linux中暂不支持。
|
||
|
||
###### ExportCsv
|
||
|
||
用途:将数组导出为 CSV 格式字符串。
|
||
参数:
|
||
|
||
- data:数组数据
|
||
- out_text:输出字符串(引用返回)
|
||
- include_index:是否包含下标(可选,1/0)
|
||
- include_header:是否包含表头(可选,1/0)
|
||
|
||
返回:是否成功(1/0)。
|
||
|
||
范例
|
||
|
||
范例01:一维数组转换成csv格式字符串
|
||
|
||
```tsl
|
||
data := array(1, 2, "3", "A", 9, 8);
|
||
ret := ExportCsv(data, s);
|
||
if ret then return s;
|
||
else return ret;
|
||
```
|
||
|
||
范例02:二维数组转换成csv格式字符串
|
||
|
||
```tsl
|
||
data := array((2, 5, 0), (3, 2, 1), (4, 7, 2));
|
||
ret := ExportCsv(data, s);
|
||
if ret then return s;
|
||
else return ret;
|
||
```
|
||
|
||
范例03:转换成csv格式字符串,结果包含数组下标信息
|
||
|
||
```tsl
|
||
data := array("A":(2, 5, 0), "B":(3, 2, 1), "C":(4, 7, 2));
|
||
ret := ExportCsv(data, s, 1);
|
||
if ret then return s;
|
||
else return ret;
|
||
```
|
||
|
||
范例04:转换成csv格式字符串,结果不包含字段头部信息
|
||
|
||
```tsl
|
||
data := array((2, 5, 0), (3, 2, 1), (4, 7, 2));
|
||
ret := ExportCsv(data, s, 0, 0);
|
||
if ret then return s;
|
||
else return ret;
|
||
```
|
||
|
||
###### ImportCsv
|
||
|
||
用途:将 CSV 字符串解析为数组。
|
||
参数:
|
||
|
||
- csv_text:CSV 字符串
|
||
- out_data:输出数组(引用返回)
|
||
- has_header:是否包含表头(可选,1/0)
|
||
|
||
返回:是否成功(1/0)。
|
||
|
||
范例
|
||
|
||
范例01:将指定csv格式字符串转换成二维数组
|
||
|
||
```tsl
|
||
s := "0,1,2\r\n2,5,0\r\n3,2,1\r\n4,7,2\r\n";
|
||
ret := ImportCsv(s, data);
|
||
if ret then return data;
|
||
else return ret;
|
||
```
|
||
|
||
范例02:读取本地csv文件,并将其转换成数组
|
||
|
||
本地csv文件内容如下:
|
||
|
||
```tsl
|
||
filepath := "D:\\test\\csv\\data.csv";
|
||
rdo2 ReadFile(rwRaw(), "", filepath, 0, 1000, s);
|
||
ret := ImportCsv(s, data, 1);
|
||
if ret then return data;
|
||
else return ret;
|
||
```
|
||
|
||
##### 复制函数
|
||
|
||
###### 内容
|
||
|
||
- dupValue
|
||
|
||
###### dupValue
|
||
|
||
用途:复制值,避免被调用函数修改原变量。
|
||
参数:
|
||
|
||
- value:输入值
|
||
|
||
返回:复制后的值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 主函数
|
||
function test1();
|
||
begin
|
||
a := 1;
|
||
b := 2;
|
||
c := 3;
|
||
d := test2(dupValue(a), b, c);
|
||
return array(a, b, c, d);
|
||
end;
|
||
// 返回array(1,20,3,33)
|
||
// 被调用函数
|
||
function test2(a, b, c);
|
||
begin
|
||
a := 10;
|
||
b := 20;
|
||
return a + b + c;
|
||
end;
|
||
```
|
||
|
||
由test1执行出来的结果可以知道,a变量,由于使用了dupValue复制值,虽然在子函数test2中改变了其值,但在主函数中的a变量仍然没变。而b变量则发生了改变。
|
||
|
||
##### 随机函数
|
||
|
||
###### 内容
|
||
|
||
- randomize
|
||
- random
|
||
- RandomFrom
|
||
|
||
###### randomize
|
||
|
||
参考random RandomFrom
|
||
|
||
###### random
|
||
|
||
用途:生成随机数。
|
||
参数:value 为上限(可选);不传则生成 0~1 之间随机实数。
|
||
返回:随机实数或随机整数。
|
||
|
||
定义1:random():Real;
|
||
|
||
说明:返回一个0到1之间的随机数
|
||
|
||
返回:实数。
|
||
|
||
定义2:random(value:Integer):Integer;
|
||
|
||
说明:如果无参数,则返回0->1之间的随机实数,如果参数为整数,则返回0->value之间的随机整数(不包括value),即左闭右开,如random(1)只会返回0。
|
||
|
||
参数:
|
||
|
||
- max_value:上限(可选;不传返回 0~1 之间随机实数;传整数返回 [0, max_value) 随机整数)
|
||
|
||
范例:
|
||
|
||
```tsl
|
||
// 表达式无参数
|
||
return random(); // 返回值为0到1随机实数:0.124562。
|
||
|
||
// 表达式有参数
|
||
return random(100); // 返回值为随机的0到100的整型数据:94。
|
||
```
|
||
|
||
参考:RandomFrom
|
||
|
||
###### RandomFrom
|
||
|
||
用途:从数组中随机取一个元素。
|
||
参数:
|
||
|
||
- items:候选数组
|
||
|
||
返回:随机元素。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
items := array('a', 'b', 'c', 'd', 'e', 'f');
|
||
return RandomFrom(items);
|
||
// 返回值为随机返回 items 中一个字符:'b'。
|
||
```
|
||
|
||
参考random
|
||
|
||
##### 条件选择函数
|
||
|
||
###### 内容
|
||
|
||
- IfThen
|
||
- IfThen3
|
||
|
||
###### IfThen
|
||
|
||
用途:条件成立返回 true_value,否则返回 false_value。
|
||
参数:
|
||
|
||
- condition:判断条件
|
||
- true_value:条件成立时返回值
|
||
- false_value:条件不成立时返回值
|
||
|
||
返回:true_value 或 false_value。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
left_value := 1;
|
||
right_value := 2;
|
||
return IfThen(left_value > right_value, left_value, right_value);
|
||
// 返回:2。
|
||
```
|
||
|
||
###### IfThen3
|
||
|
||
用途:比较两个值,返回大/等/小对应结果。
|
||
参数:
|
||
|
||
- left:左值
|
||
- right:右值
|
||
- greater_value:left > right 时返回
|
||
- equal_value:left = right 时返回
|
||
- less_value:left < right 时返回
|
||
|
||
返回:对应比较结果的值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
return IfThen3(1, 2, '左大', '相等', '右大');
|
||
// 返回:’右大’
|
||
```
|
||
|
||
##### 表达式相关函数
|
||
|
||
###### 内容
|
||
|
||
- Eval
|
||
- Call
|
||
- CallInArray
|
||
- Invoke
|
||
- Invokeinarray
|
||
- SafeEval
|
||
- DoubleVariableExecute
|
||
- MultipleExecute
|
||
- SingleVariableExecute
|
||
- SafeSetSysParam
|
||
|
||
###### Eval
|
||
|
||
用途:计算表达式或表达式字符串并返回结果。
|
||
参数:
|
||
|
||
- expr:表达式(@)或表达式字符串(&)
|
||
|
||
返回:表达式计算结果。
|
||
|
||
范例
|
||
|
||
范例01:
|
||
|
||
```tsl
|
||
// 表达式是字符串表达式。&转换字符串为表达式。
|
||
A := '1';
|
||
B := '2';
|
||
return Eval(&('A+B')); // 返回值为表达式的结果:'12'。
|
||
```
|
||
|
||
范例02:
|
||
|
||
```tsl
|
||
// 表达式是语句表达式
|
||
A := 1;
|
||
B := 2; // A,B均为整型数据
|
||
return Eval(@(A + B));
|
||
// 返回值为整型数据:3,@(A+B)可以是一个执行语句块,调用该函数会得到执行语句块后的结果。
|
||
```
|
||
|
||
范例03://字符串表达式中进行return返回。
|
||
|
||
```tsl
|
||
s := 'a := 1;b := 2;return a+b;';
|
||
return Eval(&s);
|
||
```
|
||
|
||
结果:3
|
||
|
||
范例4:跨函数中传导引用参数和变量
|
||
|
||
```tsl
|
||
setsysparam(pn_stock(), "SH600507");
|
||
return eval_test("StockZf4(t)", 20250723t);
|
||
function eval_test(e, endt);
|
||
begin
|
||
t := specdate(ref(sp_time(), 1), endt);
|
||
return array(datetostr(t), Eval(&e));
|
||
end;
|
||
```
|
||
|
||
参考Call CallInArray
|
||
|
||
###### Call
|
||
|
||
用途:按函数名字符串或函数指针调用函数。
|
||
参数:
|
||
|
||
- func:函数名字符串或函数指针
|
||
- args:调用参数列表
|
||
|
||
返回:函数返回值。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// 采用字符串方式来调用函数
|
||
return Call("IntTodate", 20140101);
|
||
// 返回41640
|
||
|
||
// 采用函数指针来调用函数
|
||
F := ThisFunction(IntToDate);
|
||
return Call(F, 20140101);
|
||
// 返回41640
|
||
```
|
||
|
||
参考Eval THISFUNCTION CallInArray
|
||
|
||
###### CallInArray
|
||
|
||
用途:以参数数组调用指定函数(含函数名或函数变量)。
|
||
参数:
|
||
|
||
- func:函数名字符串或函数指针
|
||
- args:参数数组
|
||
|
||
返回:函数调用结果。
|
||
|
||
范例
|
||
|
||
范例1:根据函数名称调用,第一个参数为函数名称
|
||
|
||
```tsl
|
||
return CallInArray("StrToIntDef", array('1234', 999));
|
||
// 返回1234
|
||
```
|
||
|
||
范例2:调用匿名函数,第一个参数是指向匿名函数的变量
|
||
|
||
```tsl
|
||
{func1是一个变量,我们将一个函数体赋值给这个变量,变量型函数我们称为匿名函数,匿名函数的语句段放在某个函数体内,调用的时候,需使用call或callinarray函数进行调用。
|
||
// 这个例子中,a是一个变量,当a在func1匿名函数中,并在匿名函数体重修改a,使a := a + 10; ,但执行完匿名函数后,a参数的值是不变的,即不支持变参,所以最后返回a为10,b为20。
|
||
callinarray在这里执行匿名函数func1时,其参数不需要跟在func1之后。}
|
||
a := 10;
|
||
func1 := function(a) begin
|
||
a := a + 10;
|
||
return a;
|
||
end;
|
||
b := CallInArray(func1, array(a));
|
||
return array(a, b);
|
||
// array(10,20)
|
||
```
|
||
|
||
范例3:根据函数指针调用,第一个参数为函数指针
|
||
|
||
```tsl
|
||
{thisfunction()函数可获得函数指针;由于调用的是stockzf3,该函数没有参数,因此,callinarray的第二个参数给空数组}
|
||
setsysparam(pn_stock(), 'SH000001');
|
||
return CallInArray(thisfunction(stockzf3), array());
|
||
```
|
||
|
||
范例04:调用时指定参数传参
|
||
|
||
```tsl
|
||
function CCC(a, b, c, d); // 展示各参数的值
|
||
begin
|
||
echo "A:", a, " B:", b, " C:", c, " D:", d;
|
||
return b;
|
||
end;
|
||
// 调用
|
||
return CallInArray("CCC", array("b":1, "d":4));
|
||
```
|
||
|
||
返回:1
|
||
|
||
打印结果:A:<NIL> B:1 C:<NIL> D:40
|
||
|
||
解析:callINArray在通过数组传参数时,可以通过指定下标的方式给指定参数进行传参,下标对应函数定义中的变量名。
|
||
|
||
上面示例中,只对参数b与d进行了传参,其它两参数没有进行传值,所以是nil。
|
||
|
||
参考Eval THISFUNCTION Call
|
||
|
||
###### Invoke
|
||
|
||
用途:调用对象成员方法或设置成员属性。
|
||
参数:
|
||
|
||
- obj:目标对象
|
||
- name:成员名
|
||
- mode:0 调用方法;1 设置成员
|
||
- args:方法参数或设置值
|
||
|
||
返回:调用结果或设置结果。
|
||
|
||
范例
|
||
|
||
范例01:设置成员变量后调用成员方法并返回结果
|
||
|
||
```tsl
|
||
obj := new classTest();
|
||
// 设置成员变量name的值为"张三"
|
||
Invoke(obj, "name", 1, "张三");
|
||
// 设置成员变量age的值为18
|
||
Invoke(obj, "age", 1, 18);
|
||
// 设置成员变量sid的值为"ts001"
|
||
Invoke(obj, "sid", 1, "ts001");
|
||
// 执行单参数重载成员方法fun
|
||
a := Invoke(obj, "fun", 0, "name");
|
||
// 执行双参数重载成员方法fun
|
||
b := Invoke(obj, "fun", 0, "name", "age");
|
||
// 执行三参数重载成员方法fun
|
||
c := Invoke(obj, "fun", 0, "name", "age", "studentID");
|
||
return array(a, b, c);
|
||
type classTest = class
|
||
name;
|
||
age;
|
||
sID;
|
||
function fun(a);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name;
|
||
echo s;
|
||
return s;
|
||
end;
|
||
function fun(a, b);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name + " " + b + ":" + floattostr(age);
|
||
echo s;
|
||
return s;
|
||
end;
|
||
function fun(a, b, c);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name + " " + b + ":" + floattostr(age) + " " + c + ":" + sID;
|
||
echo s;
|
||
return s;
|
||
end;
|
||
end;
|
||
```
|
||
|
||
打印:
|
||
|
||
返回:参考Invokeinarray
|
||
|
||
###### Invokeinarray
|
||
|
||
用途:以参数数组调用对象成员方法或设置成员属性。
|
||
参数:
|
||
|
||
- obj:目标对象
|
||
- name:成员名
|
||
- mode:0 调用方法;1 设置成员
|
||
- args:参数数组
|
||
|
||
返回:调用结果或设置结果。
|
||
|
||
范例
|
||
|
||
范例01:设置成员变量后调用成员方法并返回结果
|
||
|
||
```tsl
|
||
obj := new classTest();
|
||
// 设置成员变量name的值为"张三"
|
||
Invokeinarray(obj, "name", 1, array("张三"));
|
||
// 设置成员变量age的值为18
|
||
Invokeinarray(obj, "age", 1, array(18));
|
||
// 设置成员变量sid的值为"ts001"
|
||
Invokeinarray(obj, "sid", 1, array("ts001"));
|
||
// 执行单参数重载成员方法fun
|
||
a := Invokeinarray(obj, "fun", 0, array("name"));
|
||
// 执行双参数重载成员方法fun
|
||
b := Invokeinarray(obj, "fun", 0, array("name", "age"));
|
||
// 执行三参数重载成员方法fun
|
||
c := Invokeinarray(obj, "fun", 0, array("name", "age", "studentID"));
|
||
return array(a, b, c);
|
||
type classTest = class
|
||
name;
|
||
age;
|
||
sID;
|
||
function fun(a);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name;
|
||
echo s;
|
||
return s;
|
||
end;
|
||
function fun(a, b);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name + " " + b + ":" + floattostr(age);
|
||
echo s;
|
||
return s;
|
||
end;
|
||
function fun(a, b, c);overload;
|
||
begin
|
||
s := "\r\n" + a + ":" + name + " " + b + ":" + floattostr(age) + " " + c + ":" + sID;
|
||
echo s;
|
||
return s;
|
||
end;
|
||
end;
|
||
```
|
||
|
||
打印:
|
||
|
||
name:张三
|
||
|
||
name:张三 age:18
|
||
|
||
name:张三 age:18 studentID:ts001返回:
|
||
|
||
范例02:命名参数调用的方式
|
||
|
||
```tsl
|
||
// 调用
|
||
obj := new classTestB();
|
||
return Invokeinarray(obj, "fun", 0, array("c":3, "b":2, "a":1)); // 命名参数的调用
|
||
// 类实现
|
||
type classTestB = class
|
||
function fun(a, b, c);overload;
|
||
begin
|
||
return array(a, b, c);
|
||
end;
|
||
end;
|
||
```
|
||
|
||
返回:array(1,2,3)参考Invoke
|
||
|
||
###### SafeEval
|
||
|
||
用途:安全执行表达式或表达式字符串,执行失败返回 nil。
|
||
参数:
|
||
|
||
- expr:表达式(@)或表达式字符串(&)
|
||
返回:表达式结果或 nil。
|
||
|
||
###### DoubleVariableExecute
|
||
|
||
用途:设置两个系统参数数组并计算表达式。
|
||
参数:
|
||
|
||
- arr1:第一个参数值数组
|
||
- param1:系统参数函数(如 pn_Stock())
|
||
- arr2:第二个参数值数组
|
||
- expr:表达式
|
||
|
||
返回:结果数组。
|
||
|
||
算法
|
||
|
||
根据参数Arr和TimeArr的长度设置不同的系统参数,求表达式的值范例
|
||
|
||
```tsl
|
||
stocks := array(getbk('上证50'));
|
||
time_arr := MarketTradeDayQk(20220101T, 20221211T);
|
||
return DoubleVariableExecute(stocks, pn_Stock(), time_arr, @close());
|
||
```
|
||
|
||
返回:(部分结果截图)
|
||
|
||
###### MultipleExecute
|
||
|
||
用途:基于系统参数 STOCKS/BKS/TIMES 批量计算表达式。
|
||
参数:
|
||
|
||
- expr:表达式
|
||
返回:结果数组。
|
||
|
||
算法
|
||
|
||
(1)获得'STOCKS','BKS','TIMES'对应的系统参数;
|
||
|
||
(2)根据以上系统参数是否是数组型,设置不同的系统参数,求表达式的值
|
||
|
||
###### SingleVariableExecute
|
||
|
||
用途:设置一个系统参数数组并计算表达式。
|
||
参数:
|
||
|
||
- arr:参数值数组
|
||
- param:系统参数函数(如 pn_Stock())
|
||
- expr:表达式
|
||
|
||
返回:结果数组。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
// Arr中存储的是代码,获取2019年3月1日,Arr中所有代码的收盘价
|
||
arr := array('SZ000001', 'SZ000002');
|
||
return SingleVariableExecute(arr, pn_stock(), @close());
|
||
```
|
||
|
||
###### SafeSetSysParam
|
||
|
||
用途:安全设置系统参数(与 SetSysParam 类似,失败不抛异常)。
|
||
参数:
|
||
|
||
- param_name:参数名或系统参数函数
|
||
- value:参数值
|
||
返回:设置结果(成功为 1,失败为 0)。
|
||
|
||
##### 性能优化相关函数
|
||
|
||
###### 内容
|
||
|
||
- SetProfiler
|
||
- GetProfilerInfo
|
||
|
||
###### SetProfiler
|
||
|
||
用途:设置性能分析开关与统计范围。
|
||
参数:
|
||
|
||
- flags:统计选项位掩码
|
||
|
||
返回:无。
|
||
|
||
范例
|
||
|
||
范例01:1+2+4的优化信息返回
|
||
|
||
```tsl
|
||
SetProfiler(7);
|
||
a := array();
|
||
SetSysParam(PN_Stock(), 'SH000001');
|
||
for i := 20000101t to 20200721T do
|
||
begin
|
||
if not spec(istradeday(i), 'SH000001') then continue;
|
||
echo specdate(close(), i);
|
||
end;
|
||
return 1;
|
||
```
|
||
|
||
结果:times为函数运行的次数,seconds为运行时间,op为指令的优化信息,type为函数类型。
|
||
|
||
范例02:内置对象的优化信息返回
|
||
|
||
```tsl
|
||
SetProfiler(8);
|
||
o := new TStringList();
|
||
o.text := "Tinysoft"; // 给对象的属性赋值
|
||
o.DelimitedText := 'A=abc,B=123,C=abc,F=996,E=abd';
|
||
o.Add("G=666");
|
||
return 1;
|
||
```
|
||
|
||
优化信息如:
|
||
|
||
###### GetProfilerInfo
|
||
|
||
用途:获取性能分析信息。
|
||
参数:
|
||
|
||
- mode:可选;传 1 仅返回信息不弹窗
|
||
|
||
返回:性能分析信息。
|
||
|
||
范例
|
||
|
||
范例01:不弹出profiler窗口
|
||
|
||
```tsl
|
||
setprofiler(7); // 记录TSL源代码函数调用+二进制函数的调用+指令调用的优化信息
|
||
a := 99;
|
||
b := inttostr(a); // inttostr是函数
|
||
a := rand(1000, 1); // rand是指令
|
||
a := select * from a where [0] > 0.5 end; // select是指令
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
b := nday3(100, close()); // nday3也算是指令,不是函数 ,close是函数
|
||
return GetProfilerInfo(1);
|
||
```
|
||
|
||
范例02:弹出profiler窗口
|
||
|
||
```tsl
|
||
setprofiler(7); // 记录TSL源代码函数调用+二进制函数的调用+指令调用的优化信息
|
||
a := 99;
|
||
b := inttostr(a); // inttostr是函数
|
||
a := rand(1000, 1); // rand是指令
|
||
a := select * from a where [0] > 0.5 end; // select是指令
|
||
setsysparam(pn_stock(), "SZ000002");
|
||
b := nday3(100, close()); // nday3也算是指令,不是函数 ,close是函数
|
||
t := GetProfilerInfo();
|
||
return b;
|
||
```
|
||
|
||
返回结果:返回程序结果的同时,另外弹出profiler窗口
|
||
|
||
##### 函数库路径
|
||
|
||
###### 内容
|
||
|
||
- sysgettsllibpath
|
||
- syssettsllibpath
|
||
|
||
###### sysgettsllibpath
|
||
|
||
用途:获取当前函数库查找路径。
|
||
参数:无。
|
||
返回:当前查找路径字符串。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
echo "当前查找路径:", sysgettsllibpath(), '\r\n';
|
||
```
|
||
|
||
###### syssettsllibpath
|
||
|
||
用途:设置函数库查找路径(支持分号分隔的多个目录)。
|
||
参数:
|
||
|
||
- path_list:路径列表字符串(分号分隔)
|
||
|
||
返回:设置前的查找路径字符串。
|
||
|
||
范例
|
||
|
||
```tsl
|
||
a := 198.86;
|
||
b := -22.34;
|
||
echo "当前查找路径:", sysgettsllibpath(), '\r\n';
|
||
syssettsllibpath("C:\\DoTSL\\otherTest\\;");
|
||
echo "当前查找路径:", sysgettsllibpath(), '\r\n';
|
||
try
|
||
v := TestTsfsum(a, b);
|
||
echo "TestTsfsum执行成功:", v, '\r\n';
|
||
except
|
||
echo ExceptObject.ErrInfo, '\r\n';
|
||
end;
|
||
return "执行完毕";
|
||
```
|
||
|
||
##### 调用堆栈
|