您好:
在寫警示程式時,以下的陣列程式中,
原始程式使用Array_Copy進行陣列複製,
卻沒辦法複製陣列內容,內容都為0;
使用Array_Copy函式教學裡的範例,
是可以正常顯示陣列Copy的結果。
1、請協助測試Array不能copy的原因?
2、使用陣列時,如果雷達有勾選「逐筆洗價」,陣列宣告時是否要使用intrabarpersist ?
以下附上程式碼及print的結果,謝謝。
========程式碼
Array: arrA[5](0); // 宣告arrA是一個有5個元素的陣列,初始值都是0
Array: arrB[5](0); // 宣告arrB是一個有5個元素的陣列,初始值都是0
Array: arrC[5](0); // 宣告arrC是一個有5個元素的陣列,初始值都是0
arrA[1] = 1; arrA[2] = 2; arrA[3] = 3; arrA[4] = 4; arrA[5] = 5;
Array_Copy(arrA, 1, arrB, 1, 5); // 執行後 arrB = [1, 2, 3, 4, 5]
Array_Copy(arrA, 1, arrC, 2, 3); // 執行後 arrC = [0, 1, 2, 3, 0]
print("ArrA[1]=",numtostr(arra[1],0));
print("ArrA[2]=",numtostr(arra[2],0));
print("ArrA[3]=",numtostr(arra[3],0));
print("ArrA[4]=",numtostr(arra[4],0));
print("ArrA[5]=",numtostr(arra[5],0));
print("");
print("ArrB[1]=",numtostr(arrB[1],0));
print("ArrB[2]=",numtostr(arrB[2],0));
print("ArrB[3]=",numtostr(arrB[3],0));
print("ArrB[4]=",numtostr(arrB[4],0));
print("ArrB[5]=",numtostr(arrB[5],0));
print("");
print("ArrC[1]=",numtostr(arrC[1],0));
print("ArrC[2]=",numtostr(arrC[2],0));
print("ArrC[3]=",numtostr(arrC[3],0));
print("ArrC[4]=",numtostr(arrC[4],0));
print("ArrC[5]=",numtostr(arrC[5],0));
print("");
variable: intrabarpersist ArrayItemPriceIn(1);//default index start =1
variable: intrabarpersist ArrayItemPriceInCount(10);
Array: ArrayPriceIn[](0);
Array: ArrayPriceIn1[](0);
variable: m(0);
variable:KBarOfDay(0);
if Date<> Date[1]
then
KBarOfDay = 1
else
KBarOfDay+=1;
//First Resize Array
if (KbarOfDay = 1)
then
begin
print("===First resize");
Array_setmaxindex(ArrayPriceIn,ArrayItemPriceInCount);
end;
print("execute array copy start");
Array_copy(arrA,1,ArrayPriceIn1,1,5);
Array_copy(ArrayPriceIn,1,ArrayPriceIn1,1,ArrayItemPriceInCount);
print("execute array copy end");
print("");
print("ArrayPriceIn01===");
for m = 1 to ArrayItemPriceInCount
begin
print("m=",numtostr(m,0));
print("PriceIn=",numtostr(ArrayPriceIn[m],2)," PriceIn1=",numtostr(ArrayPriceIn1[m],2));
end;
ArrayPriceIn[1] = random(999);
ArrayPriceIn[2] = random(999);
ArrayPriceIn[3] = random(999);
ArrayPriceIn[4] = random(999);
ArrayPriceIn[5] = random(999);
ArrayPriceIn[6] = random(999);
ArrayPriceIn[7] = random(999);
ArrayPriceIn[8] = random(999);
print("");
print("ArrayPriceIn02===");
for m = 1 to ArrayItemPriceInCount
begin
print("m=",numtostr(m,0));
print("PriceIn=",numtostr(ArrayPriceIn[m],2)," PriceIn1=",numtostr(ArrayPriceIn1[m],2));
end;
=========print結果
ArrA[1]= 1
ArrA[2]= 2
ArrA[3]= 3
ArrA[4]= 4
ArrA[5]= 5
ArrB[1]= 1
ArrB[2]= 2
ArrB[3]= 3
ArrB[4]= 4
ArrB[5]= 5
ArrC[1]= 0
ArrC[2]= 1
ArrC[3]= 2
ArrC[4]= 3
ArrC[5]= 0
execute array copy start
execute array copy end
ArrayPriceIn01===
m= 1
PriceIn= 858.60 PriceIn1= 0.00
m= 2
PriceIn= 516.92 PriceIn1= 0.00
m= 3
PriceIn= 706.80 PriceIn1= 0.00
m= 4
PriceIn= 255.92 PriceIn1= 0.00
m= 5
PriceIn= 920.13 PriceIn1= 0.00
m= 6
PriceIn= 490.77 PriceIn1= 0.00
m= 7
PriceIn= 93.45 PriceIn1= 0.00
m= 8
PriceIn= 825.16 PriceIn1= 0.00
m= 9
PriceIn= 0.00 PriceIn1= 0.00
m= 10
PriceIn= 0.00 PriceIn1= 0.00
ArrayPriceIn02===
m= 1
PriceIn= 76.62 PriceIn1= 0.00
m= 2
PriceIn= 282.35 PriceIn1= 0.00
m= 3
PriceIn= 383.48 PriceIn1= 0.00
m= 4
PriceIn= 642.63 PriceIn1= 0.00
m= 5
PriceIn= 514.58 PriceIn1= 0.00
m= 6
PriceIn= 431.10 PriceIn1= 0.00
m= 7
PriceIn= 140.58 PriceIn1= 0.00
m= 8
PriceIn= 974.00 PriceIn1= 0.00
m= 9
PriceIn= 0.00 PriceIn1= 0.00
m= 10
PriceIn= 0.00 PriceIn1= 0.00
4 評論