以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请问这是什么错误啊。搞了几天了  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=12784)

--  作者:∑
--  发布时间:2012/7/4 21:03:35
--  请问这是什么错误啊。搞了几天了

公式

 

runmode:1;
rq:PEAKBARS(4,5,1);
tmp:readtest(rq),linethick0; 

 

 

函数

Function readtest(Formula,M)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    readtest=0
 tttt =  document.GetPrivateProfileInt("aa", M,0 , "C:\\1.ini")

End Function

 

 

 

1.ini 内容

 

[aa]
0=0
1=2
2=4
3=6

 

 

错误提示:

编译器错误 13

类型不匹配:document.getprivateprofileint

 

请问哪里写错了。谢谢


--  作者:admin
--  发布时间:2012/7/4 23:55:41
--  

在序列模式下,传输的变量应该注意要区分是序列变量还是单值变量。如果是序列变量,那么传递给VBS自定义函数中的参数就是个数组,你这种调用方式自然是有问题的。应该使用数组的方式读取。

 

Function readtest(Formula,M)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    
   DataCount = UBound(M)
    If DataCount <> Formula.DataSize-1 Then
        Exit Function
    End If

 

\'定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)

    For i = 0 To Formula.DataSize-1

      ResultMa(i) =  document.GetPrivateProfileInt("aa", M(i),0 , "C:\\1.ini")
    NEXT

   readtest=ResultMa
 
End Function


--  作者:∑
--  发布时间:2012/7/5 7:30:34
--  

谢谢管理员耐心答复。

 

公式:

runmode:1;
m:PEAKBARS(4,5,1),linethick0;
tmp:readtest(m),linethick0;

 

自定义函数:

Function readtest(Formula,M)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    DataCount = UBound(M)
    If DataCount <> Forula.DataSize-1 Then
        Exit Function
    End If

\'定义一个计算返回的数组
    Dim ResultMa
    Redim ResultMa(DataCount)
    For i = 0 To Formula.DataSize-1
      ResultMa(i) =  document.GetPrivateProfileInt("aa", M(i),0 , "C:\\1.ini")
    NEXT
    readtest=ResultMa
End Function

 

 

提示错误:

编译器错误 ‘424’

缺少对象 \'forula\'


--  作者:Leon
--  发布时间:2012/7/5 8:53:54
--  
楼主笔误了 If DataCount <> Forula.DataSize-1 Then里的Forula改成Formula