以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  高级功能研发区  (http://222.73.7.161/bbs/list.asp?boardid=5)
----  [求助]请教自定义函数未通过  (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=140827)

--  作者:杜非特
--  发布时间:2016/10/13 2:55:10
--  [求助]请教自定义函数未通过
下面这个自定义函数未通过请问问题出在哪里。。。谢谢。。。


Function DFTczzfcwz(Formula,dczc,dczf,cxcs)
    
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码

    cd = 0
    for wz = 1 to StrLen(dczc)
        if STRMID(dczc,wz,StrLen(dczf)) = dczf Then begin
            cd = cd + 1
            If cd = cxcs Then begin
                cxwz = wz
                Exit for
            End Else Begin    \'到这一句未通过!编译器错误1024 缺少语句
                cxwz = 0
            End 
        End
    Next
    
    DFTczzfcwz = cxwz

End Function



--  作者:yukizzc
--  发布时间:2016/10/13 10:14:13
--  

vba的if语句是

if cond then

end if


--  作者:王锋
--  发布时间:2016/10/13 11:02:08
--  

如果你用PEL语言做模块函数,请参考 ##的用户函数引用方法参考


--  作者:杜非特
--  发布时间:2016/10/13 12:30:05
--  
谢谢楼上二位了。。。
--  作者:客人
--  发布时间:2016/10/13 12:52:14
--  
改不好啊。。。能否请【王峰】老师把上面的代码帮我弄一下(我是在Function里面定义的)。。。谢谢。。。
--  作者:yukizzc
--  发布时间:2016/10/13 13:03:43
--  

pel和vb是两个使用环境

##是pel下的用户函数模式,使用见链接http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=71961

 

vb里面你if请看2楼,if不要加begin,begin这个是pel的语法规范,您不能两个混淆


--  作者:杜非特
--  发布时间:2016/10/13 14:05:36
--  
请问版主我在Function里面是否可以用纯vb6的语言?谢谢。。
--  作者:杜非特
--  发布时间:2016/10/13 14:20:11
--  
Function DFTczzfcwz(Formula,dczc,dczf,cxcs)
    
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码

    cd = 0
    For wz = 1 to Len(dczc)
        If Mid(dczc,wz,Len(dczf)) = dczf Then
            cd = cd + 1
            If cd = cxcs Then
                cxwz = wz
                Exit for
            Else
                cxwz = 0
            End If
        End If
    Next
    
    DFTczzfcwz = cxwz

End Function

上面代码通过。但是DFTCZZFCWZ(\'sag,sdsg,sgs,dgh\',\',\',2);返回的是0。这是一个查找‘,’号在\'sag,sdsg,sgs,dgh\'字符串中第2次出现的位置的意思。。。请教问题出在哪里?谢谢。。。

--  作者:杜非特
--  发布时间:2016/10/13 14:33:46
--  
Private Sub Command1_Click()
Text1.Text = DFTczzfcwz("sag,sdsg,sgs,dgh", ",", 2)
End Sub

Function DFTczzfcwz(dczc, dczf, cxcs)
    
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码

    cd = 0
    For wz = 1 To Len(dczc)
        If Mid(dczc, wz, Len(dczf)) = dczf Then
            cd = cd + 1
            If cd = cxcs Then
                cxwz = wz
                Exit For
            Else
                cxwz = 0
            End If
        End If
    Next
    
    DFTczzfcwz = cxwz

End Function

上面代码在vb6中通过并返回正确数据。。。

--  作者:yukizzc
--  发布时间:2016/10/13 15:14:40
--  

自定义函数不支持字符串,http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=56610