ktzddz 发表于 2017-7-6 16:36:43

序列变量出现BUG!求解~

本帖最后由 ktzddz 于 2017-7-6 16:47 编辑

TempDATA = 自定义函数A(MA30);
if (InvalidNumeric != TempDATA) 显示函数B(MA30,CurrentBar-2,CurrentBar);
显示函数B(MA30,CurrentBar-2,CurrentBar);

"显示函数B"两次显示的值不一致!
第一次显示(错误值):
3033.133333
3033.133333
3033.133333
第二次显示(正常值):
3033.133333
3032.866667
3033.033333

而且第一次无论取MA,全部都只能是3033.133333。求解!!!

补充:【显示函数B】
Params
   NumericSeries TestSeries;
   Numeric BeginBar;
   Numeric EndBar;
Vars
        Numeric LoopCount;
Begin
For LoopCount = EndBar DownTo BeginBar
{
        Commentary(Text(TestSeries));
}
End

推测:是不是TB编译器在某些情况下,将NumericSeries变量当作Numeric处理了?

小米 发表于 2017-7-7 09:19:48

本帖最后由 小米 于 2017-7-7 09:21 编辑

函数B的参数是需要序序列值进行计算的,这类的函数在公式应用中计算时,不要放条件下。。
建议增加一个中间变量,将函数B赋值 给中间变量,再将中间变量代入判断条件下使用。

ktzddz 发表于 2017-7-8 19:58:32

小米 发表于 2017-7-7 09:19 static/image/common/back.gif
函数B的参数是需要序序列值进行计算的,这类的函数在公式应用中计算时,不要放条件下。。
建议增加一个中间 ...

暂时只能如此了,感谢版主。
不过还是希望尽快修复。

小米 发表于 2017-7-10 09:06:02

ktzddz 发表于 2017-7-8 19:58 static/image/common/back.gif
暂时只能如此了,感谢版主。
不过还是希望尽快修复。

抱歉啊,这个不是修复不修复的事了。
机制如此 ,在TB的整个公式系统没有改变前,确实需要以此规则来进行公式的编写的。

qq859531913 发表于 2017-11-26 02:40:34

序列变量问题太大了, 我也遇到放条件下的序列变量问题, 资深程序都会遇到这种问题, 这样的功能限制, 对编程实在是太不方便了.

myc45595 发表于 2018-2-26 12:47:48

序列变量不要放在判断里,会发生莫名其妙的问题
页: [1]
查看完整版本: 序列变量出现BUG!求解~