#### 客户端函数

##### 内容

- 结果处理
- 错误处理
- 客户端行为控制函数
- SendRunningData

##### 结果处理

###### 内容

- DelPrecode
- IncPrecode
- ProcessField
- ProcessFirstField
- TimeSeriesSplit
- ReportSeriesSplit
- TwoDimFormat2
- ThreeDimFormat2
- ThreeDimFormat3
- ThreeDimFormat4
- ThreeDimFormat5
- ThreeDimFormat6
- IsTwoDim
- TransForm
- TransPose
- TransPoseForChart
- TransPoseForChartSysParam
- TransPoseForChartSysParamEx
- TransDataStandardize
- CallBack
- 层次表格的展开
- 简单统计
- 品种管理

###### DelPrecode

###### IncPrecode

###### ProcessField

###### ProcessFirstField

###### TimeSeriesSplit

###### ReportSeriesSplit

###### TwoDimFormat2

###### ThreeDimFormat2

###### ThreeDimFormat3

###### ThreeDimFormat4

###### ThreeDimFormat5

###### ThreeDimFormat6

###### IsTwoDim

###### TransForm

###### TransPose

###### TransPoseForChart

###### TransPoseForChartSysParam

###### TransPoseForChartSysParamEx

###### TransDataStandardize

###### CallBack

####### 内容

- DelPrecodeCallBack
- IncPrecodeCallBack

####### DelPrecodeCallBack

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
return DelPrecodeCallBack('SH600000');
```

结果：’ 600000’

####### IncPrecodeCallBack

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
return IncPrecodeCallBack('000002.SZ');
```

结果：’SZ000002’

###### 层次表格的展开

####### 内容

- CheckDataCanBeExtract
- ExtractData
- ExtractDataEx
- ExtractDataEx2
- ExtractDataLocalRun
- ExtractDataLocalRun2

####### CheckDataCanBeExtract

####### ExtractData

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
r := Query("", "SH600000;SZ000002", true, "", "代码", DefaultStockID(),
"名称", CurrentStockName(),
"股票.分红送股", infoarray(18));
return ExtractData(r, 1, 0);
```

####### ExtractDataEx

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
r := Query("", "SH600000;SZ000002", true, "", "代码", DefaultStockID(),
"名称", CurrentStockName(),
"名称2", CurrentStockName(),
"名称3f", CurrentStockName(),
"股票.分红送股", infoarray(18));
return ExtractDataEx(r, 1, 0, 1);
```

####### ExtractDataEx2

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 数据展开范例
r := Query("", "SH600000;SZ000002", true, "", "代码", DefaultStockID(),
"名称", CurrentStockName(),
"名称2", CurrentStockName(),
"名称3f", CurrentStockName(),
"股票.分红送股", infoarray(18));
return ExtractDataEx2(r, 1, 0, 1, 1);
```

####### ExtractDataLocalRun

####### ExtractDataLocalRun2

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
// 数据展开范例
r := Query("", "SH600000;SZ000002", true, "", "代码", DefaultStockID(),
"名称", CurrentStockName(),
"名称2", CurrentStockName(),
"名称3f", CurrentStockName(),
"股票.分红送股", infoarray(18));
setsysparam(pn_data(), r);
return ExtractDataLocalRun2(0, 1);
```

###### 简单统计

####### 内容

- SimpleStat
- SimpleStatLocal

####### SimpleStat

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
data := array(1, 2, 3, 4, 5);
return SimpleStat(Data);
```

####### SimpleStatLocal

###### 品种管理

####### 内容

- GetDefaultFuncNameByStock
- GetTypeOfStock

####### GetDefaultFuncNameByStock

####### GetTypeOfStock

用途：结果处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
return GetTypeOfStock('OF000001');
```

结果：4

##### 错误处理

###### 内容

- ThisFuncOnlyForStock
- ThisFuncOnlyForBond
- ThisFuncUnderConstruction
- ThisFunOnlyForIndex
- RaiseError
- ThisFuncOnlyForFund
- ASSERT

###### ThisFuncOnlyForStock

###### ThisFuncOnlyForBond

###### ThisFuncUnderConstruction

###### ThisFunOnlyForIndex

###### RaiseError

范例

```tsl
return raise Error('function1', '无效的语段');
```

###### ThisFuncOnlyForFund

###### ASSERT

用途：错误处理相关函数。
参数：

返回：处理后的结果值。

范例

```tsl
return ASSERT(0, '无效的语段');
```

##### 客户端行为控制函数

###### 内容

- 客户端行为控制函数简介
- TSExpert_ClientConfig

###### 客户端行为控制函数简介

客户端行为控制，是指客户端会调用一个模型，该模型的返回的结果会影响到客户端的行为，目前，客户端支持用户编写一个名为TSExpert_ClientConfig的函数，客户端会根据该函数的返回结果集来决定CHART的背景图，CHART的颜色序列，重新登录自动执行函数等等行为。

###### TSExpert_ClientConfig

范例

```tsl
// 在客户端内创建函数，函数名为TSExpert_ClientConfig，函数体内的函数如下
r := array();
r["AutoRun"][0] := 'TS_ClientDemo'; // TS_ClientDemo为预先设定好的函数，在下次登陆客户端时会自动运行该函数。其中TS_ClientDemo的代码为rdo2 MessageBox("欢迎登陆天软客户端","您好",rdo2 mb_DefButton1());
return r;
```

效果： 重新启动客户端时，会弹出下面对话框

该函数的返回值为一个数组，该数组的下标定义如下：

####### 内容

- ChartColor
- ChartColorArray
- DisabledFuncTypeList
- DisabledSystemFuncList
- DisabledSysFuncList
- FuncTypeList
- AutoRun

####### ChartColor

值为整数，为数组类型数据展示的Chart图的默认背景色。

例如：值为clWhite()

####### ChartColorArray

值为一个一维整数颜色数组，该数组为在数组类型数据展示的时候，下边的Chart的序列的颜色序列，例如：array(clRed(),clYellow(),clBlue()…..)表示第一个图的颜色为红色，第二个为黄色，第三个为蓝色…..。

####### DisabledFuncTypeList

值为一个一维整数数组，代表了在系统里禁用的函数类型ID，函数类型在funcType.cfg里定义。被禁止的函数类型将不会在系统里展示。

####### DisabledSystemFuncList

值为一个一维字符串数组，代表了在系统中隐藏的共用函数的函数名列表。

####### DisabledSysFuncList

值为一个一维字符串数组，代表了在系统中隐藏的二进制系统函数的函数名列表。

####### FuncTypeList

值为一个二维数组，该数组为扩展的函数类型定义，其定义参考FuncType.cfg。

这个二维数组有两列，分别为ID和NAME，ID列就是函数类型的数字，NAME则是函数类型的显示名称。

例如：

Array(("ID":601,"NAME":"我的扩展.扩展范例1"),…….)

####### AutoRun

值为一个数组，代表在客户端每次重新登录后自动运行的函数列表。

数组可以是一维的，也可以是二维。如果是一维，则每项的值为字符串类型，为需要的自动运行的函数名，如果是二维的，则具备两列，分别为type和name。

type列，类型为整数，表示函数的类型。0:用户函数，1:共享函数，2:共用函数，3:系统函数

name列，类型为字符串，表示函数的名称。

例如：array("AutoRunDemo1","AutoRunDemo2")表明启动的时候自动运行名为autorundemo1和autorundemo2的函数。

也可以用array(("type":0,"name":"AutoRunDemo1"),("type":0,"name":"AutoRunDemo2"))表明自动运行用户函数AutoRunDemo1和用户函数AutoRunDemo2。

##### SendRunningData

范例

```tsl
// 在原窗口输出个数，无需加Nwdow参数
n := 0;
while n < 100 do
begin
    Echo n;
    SendRunningData(n);
    n++;
end;
return 1;
// 在新窗口输出数组，则需要加Nwdow参数，代码如下：
n := 0;
while n < 100 do
begin
    Echo n;
    SendRunningData(rand(10), "新窗口");
    n++;
end;
return 1;
```
