以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  版主啊,UBOUND问题  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=3957)

--  作者:夏小飞
--  发布时间:2010/11/19 11:38:27
--  版主啊,UBOUND问题

我在高级里写这样的代码说没有Ubound这个函数

msgbox Ubound(vm1)

for i=0 to Ubound(vm1)
  if i>=vn1 then
     vm1(i)=f(i,vn1)
  end if

next

 

我在公式系统里写同样代码也没错,公式能正常输出

<%

msgbox Ubound(vm1)

for i=0 to Ubound(vm1)
  if i>=vn1 then
     vm1(i)=f(i,vn1)
  end if

next

%>

请问版主这个是为什么呢


--  作者:wattwei
--  发布时间:2010/11/19 11:40:41
--  
请把代码写全。看不出来vm1是什么东西,怎么能调试?
--  作者:夏小飞
--  发布时间:2010/11/19 11:55:26
--  

vm1是个数组 在飞狐的帮助上有,Ubound是一个测试数组长度的函数 好像后台没有,但我写在公式系统里没问题


--  作者:夏小飞
--  发布时间:2010/11/19 11:55:37
--  

m1:c;
m2:c;
m3:c;
n1:=5;
n2:=10;
n3:=13;
<%
vc=ffl.vardata("m1")
vm1=ffl.vardata("m1")
vm2=ffl.vardata("m2")
vm3=ffl.vardata("m3")
vn1=ffl.vardata("n1")
vn2=ffl.vardata("n2")
vn3=ffl.vardata("n3")

vn1=vn1-1
vn2=vn2-1
vn3=vn3-1

\'msgbox Ubound(vm1)

for i=0 to Ubound(vm1)
  if i>=vn1 then
     vm1(i)=f(i,vn1)
  end if
  if i>=vn2 then
     vm2(i)=f(i,vn2) \'调用自定义过程(函数)f(i,vn2)
  end if
  if i>=vn3 then
     vm3(i)=f(i,vn3) \'调用自定义过程(函数)f(i,vn3)
  end if
next

ffl.vardata("m1")=vm1
ffl.vardata("m2")=vm2
ffl.vardata("m3")=vm3

ffl.varStartIndex("m1")=vn1
ffl.varStartIndex("m2")=vn2
ffl.varStartIndex("m3")=vn3

\'以下定义求Y日平均值的函数(过程)
function f(x,y)
  sumc=0

  \'求Y日收盘价之和
  for j=0 to y
    sumc=sumc+vc(x-j)
  next

  \'函数f返回Y日均价
  f=sumc/(y+1)
end function
%>


--  作者:夏小飞
--  发布时间:2010/11/19 11:55:50
--  
上面是完整的代码
--  作者:wattwei
--  发布时间:2010/11/19 12:04:52
--  
金字塔的公式系统支持4楼的代码吗?直接把vbs嵌到公式中?
没用过。在1.991版里试了下,不支持

--  作者:夏小飞
--  发布时间:2010/11/19 12:09:43
--  

我是2.02啊


--  作者:夏小飞
--  发布时间:2010/11/19 12:18:32
--  

那请问 我在VBS里要知道数组的长度用什么函数?


--  作者:wattwei
--  发布时间:2010/11/19 12:39:29
--  
升级到了2.02,4楼那段代码测试没问题。
看了下更新的帮助文档,自定义函数增加了针对两种工作模式的示例。
如果使用传统的数组UBound是支持的,如果想用"Stock.Array",要用Count替换



--  作者:夏小飞
--  发布时间:2010/11/19 12:52:52
--  
谢谢 原来还有2种数组啊