Board logo

标题: MultiCharts编程-PowerLanguage-Dynamic Array动态数组 [打印本页]

作者: 龙听    时间: 2018-5-9 11:09     标题: MultiCharts编程-PowerLanguage-Dynamic Array动态数组

10 Dynamic Array动态数组


在第9章中说明了一般指定长度的数组定义,有时需要用到动态数组来存计算出的数据值。本章则为动态数组的定义、比较、设定数值范围、排序、求和等给出详细介绍。

  Array_Compare  
  

说明

  
  

比较源数组和目标数组中的指定起始位置及指定数量的元素是否相同

  

源数组和目标数组可以是相同或不同的一维数组。

  

若比较的数组为数值数组,会比较每组元素的数值大小。

  

若比较的数组为字符串数组,会比较每组元素的ASCII值的大小。

  

若比较的数组为布林数组,会比较每组元素的布林值是否相同,若不相同时,真(true)大于假(false)。

  
  

语法

  
  

Array_Compare(源数组,源索引,目标数组,目标索引,元素个数)

  
  

参数

  
  

源数组——要比较的第一个数组

  

源索引——数值表达式,指定数组1的开始索引值

  

目标数组——要比较的第二个数组

  

目标索引——数值表达式,指定数组2的开始索引值

  

元素个数——数值表达式,要比较的元素个数

  

索引从0开始计数

  
  

返回

  
  

0——比较的每组元素完全相同;

  

1——源数组的元素大于目标数组;

  

-1——源数组的元素小于目标数组。

  
  

范例

  
  

比较数组元素Array1[3]Array2[2]的大小,以及 Array1[4]Array2[3]的大小:

  

Array:Array1[4](0),Array2[6](0);

  

for
Value1=0
to
4
begin Array1[Value1]=Value1*2; end;

  

for
value2=0
to
6
begin
Array2[value2]=value2*3; end;

  

Value3=Array_Compare(Array1,3,Array2,2,2);

  

由上可知Array1[3]= Array2[2]Array1[4]< Array2[3],则Value3=-1

  

Array1{false, false, false, false, false, false, true, false}Array2{false, false, false, false, false, false, true, false},则Value3=0

  

Array1{a,b,c,d,e,f,g,h}Array2{a,b,c,d,e,f,g,h},则Value3=1

  


  Array_Copy  
  

说明

  
  

复制源数组中的指定起始位置及数量的元素至目标数组指定的起始位置。

  

源数组和目标数组可以是相同或不同的一维数组。

  
  

语法

  
  

Array_Copy(源数组,来源索引,目标数组,目标索引,元素个数)

  
  

参数

  
  

源数组——要复制的源数组

  

源索引——数值表达式,指定源数组的索引值

  

目标数组——要复制的目标数组

  

目标索引——数值表达式,指定目标数组的索引值

  

元素个数——数值表达式,要比较的元素个数

  
  

范例

  
  

复制Array1索引4开始的2个元素至Array2索引6开始的2个元素位置:

  

Array_Copy(Array1,4,Array2,6,2);

  

复制Array1索引4开始的2个元素至索引6开始的2个元素位置:

  

Array_Copy(Array1,4,Array1,6,2);

  


  Array_GetMaxIndex  
  

说明

  
  

取得数组的最大索引值。

  

数组的索引值从0开始,数组的元素个数为最大索引值加1

  
  

语法

  
  

Array_GetMaxIndex(数组名称)

  
  

参数

  
  

数组名称——要查询的数组名称

  
  

范例

  
  

Array1的最大索引值存入变量Value1,若索引有10个元素,则Value1=9:

  

Value1=Array_GetMaxIndex(Array1);

  


  Array_GetType  
  

说明

  
  

取得数组的类型。

  
  

语法

  
  

Array_GetType(数组名称)

  
  

参数

  
  

数组名称——要查询的数组名称

  
  

返回值

  
  

2——布林型数组

  

3——字符串型数组

  

7——数值型数组

  
  

范例

  
  

查询Array1的类型,并将结果存入变量Value1

  

Array: Array1[10](false);

  

Value1=Array_GetType(Array1);

  

Value1=2

  

Array: Array1[10](“”);

  

Value1=Array_GetType(Array1)

  

Value1=3

  

Array: Array1[10](0);

  

Value1=Array_GetType(Array1)

  

Value1=7

  


  Array_SetMaxIndex  
  

说明

  
  

重设定义为动态数组的大小;返回true代表重设成功。

  

数值可以重设为更大或更小;当数组变大时,增加的元素会设定成定义数组时的预设值。

  
  

语法

  
  

Array_SetMaxIndex(数组名称,最大索引值)

  
  

参数

  
  

数值名称——要设定的数组名称

  

最大索引值——数值表达式,数组要设定的最大索引值

  
  

返回值

  
  

True——设定成功

  

False——设定失败

  
  

范例

  
  

重新设定动态数组Array1的大小为10个元素(最大索引值为9),并把结果赋给变量ResizeReport:

  

Var: ResizeReport(false);

  

Array: Array1[](0);

  

ResizeReport = Array_SetMaxIndex(Array1,9);

  

如果设定成功,则ResizeReport返回True;否则为False

  


  Array_SetValRange  
  

说明

  
  

同时为数组指定范围的元素赋值

  
  

语法

  
  

Array_SetValRange(数组名称, 起始索引,结束索引,数值)

  
  

参数

  
  

数组名称——要赋值的数组名称

  

起始索引——数值表达式,指定数组赋值范围的开始索引值

  

结束索引——数值表达式,指定数组赋值范围的结束索引值

  

数值——数值表达式、字符串表达式或布林表达式,数组元素要设定的值。数值的类型要和数组定义类型一致。

  
  

范例

  
  

重新赋值Array1索引4至索引6的元素:

  

Array_SetValRange(Array1,4,6,0);

  

若数组为{1,2,3,4,5,6,7,8},则赋值后数组为{1,2,3,4,0,0,0,8}

  

Array_SetValRange(Array1,4,6,True);

  

若数组为{false, false, false, false, false, false, true,  false},则赋值后数组为{false, false, false, false, true, true,  true, false}

  

Array_SetValRange(Array1,4,6,”a”);

  

若数组为{a,b,c,d,e,f,g,h},则赋值后数组为{a,b,c,d,a,a,a,h}

  


  Array_Sort  
  

说明

  
  

重新排序数组中的指定范围数值。

  

若为数值数组,依数值大小排序。

  

若为布林数组,依true=1false=0的大小排序。

  

若为字符串数组,依字符串的ASCII值大小排序。

  
  

语法

  
  

Array_Sort(数组名称, 起始索引, 结束索引, 排序方式)

  
  

参数

  
  

数组名称——要排序的数组名称

  

起始索引——数值表达式,指定数组排序范围的开始索引值

  

结束索引——数值表达式,指定数组排序范围的结束索引值

  

排序方式——布林表达式,指定数组的排序方式,True为递增,False为递减

  
  

范例

  
  

重新排序Array1索引4至索引6的元素:

  

Array_Sort(Array1,4,6,false)

  

若数组为{1,2,3,4,5,6,7,8},则赋值后数组为{1,2,3,4,7,6,5,8}

  

若数组为{false, false, false, false, false, false, true, false},则赋值后数组为{false, false, false, false, true,  false, false, false}

  

若数组为{a,b,c,d,e,f,g,h},则赋值后数组为{a,b,c,d,g,f,e,h}

  


  Array_Sum  
  

说明

  
  

返回数值数组中指定范围的数值总和。

  
  

语法

  
  

Array_Sum(数组名称,起始索引,结束索引)

  
  

参数

  
  

数组名称——要加总的数组名称

  

起始索引——数值表达式,指定数组加总范围的开始索引值

  

结束索引——数值表达式,指定数组加总范围的结束索引值

  
  

范例

  
  

加总Array1索引4至索引6的元素,并将结果存入变数Value1:

  

Value1=Array_Sum(Array1,4,6);

  

若数组为{1,2,3,4,5,6,7,8},则Value1=18

  


  Fill_Array  
  

说明

  
  

将数组中的元素设定成指定的值。

  
  

语法

  
  

Fill_Array(数组名称,数值)

  
  

参数

  
  

数组名称——要设定值的数组名称

  

数值——数值表达式、字符串表达式或布林表达式,要指派给数组元素的值。数值的类型要和数组定义类型一致。

  
  

范例

  
  

Array1中的每个元素设定为True

  

Array: Array1[10](False);

  

Fill_Array(Array1,True);

  





欢迎光临 龙听期货论坛 (http://www.qhlt.cn/) Powered by Discuz! 7.2