您的位置:程序门 -> vb ->



如何用字符串启动运行function


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何用字符串启动运行function[无满意答案结贴,结贴人:ningyong58]
发表于:2007-10-19 14:01:10 楼主
我现在做了很多function   pi()
每次运行都是直接写aa
  能否用字符串来运行function   pi()如下例程序
function   pi()   as   double
    pi   =   4   *   atn(1)
end   function

function   degreetoradian()   as   double
    pi   =   4   *   atn(1)
    degreetoradian   =   pi   /   180
end   function
function   radiantodegree()   as   double
    pi   =   4   *   atn(1)
    radiantodegree   =   180   /   pi
end   function

我希望启动运行function的方法
sub   main()
    dim   aa(2)   as   string
    aa(0)   =   "pi":   aa(1)=   "degreetoradian"   aa(2)=   "radiantodegree"
    ??用什么语句能启动运行   pi等function如下面面程序
end   sub

正常启动运行funciton的方法
sub   mm
    pi
    degreetoradian
    radiantodegree
end   sub
请教各位大侠,我这种思想是否可行.
发表于:2007-10-19 14:10:121楼 得分:0
用   callbyname,不过必须是对象的公共方法,例:
vbscript code
sub main() dim o as collection set o = new collection callbyname o, "add", vbmethod, "abc" debug.print o(1) end sub
发表于:2007-10-19 14:41:372楼 得分:0
谢谢楼上的回答
sub   main()
        dim   o   as   collection
        set   o   =   new   collection
        callbyname   o,   "add",   vbmethod,   "abc"
        debug.print   o(1)-----------返回数据类型为string

end   sub
debug.print   o(1)返回的数据类型为string
无法启动pi等功能程序.
发表于:2007-10-19 14:44:443楼 得分:0
debug.print   callbyname(o,   "count",   vbmethod)
发表于:2007-10-19 15:13:334楼 得分:0
谢谢,可是结果为1
debug.print   callbyname(o,   "count",   vbmethod)---------返回数据是1
debug.print   typename(callbyname(o,   "count",   vbmethod))------返回值是long
发表于:2007-10-19 15:25:515楼 得分:0
sub   mm()
        dim   o   as   collection
        set   o   =   new   collection
       
        callbyname   o,   "add",   vbmethod,   "ppp"
       
        debug.print   typename(o(1)),   o(1)
        kk   =   callbyname(o,   "count",   vbmethod)
        debug.print   typename(kk),   kk
        debug.print   ppp
end   sub
返回结果如下:
typename(o(1))     返回值为       string   ---     o(1)       返回值为       ppp
typename(kk)         返回值为       long       ----     kk         返回值为         1  
ppp                         123456789  


function   ppp()   as   double
    ppp   =   123456789
end   function
发表于:2007-10-19 15:42:316楼 得分:0
可惜vb没有c++函数重载的概念,否则这个问题很好解决。
给我的感觉,你这几个函数效率太低,为什么不把pi   =   4   *   atn(1)定义成公共变量?每个函数都重复了这个式子。
发表于:2007-10-19 15:42:357楼 得分:0
可惜vb没有c++函数重载的概念,否则这个问题很好解决。
给我的感觉,你这几个函数效率太低,为什么不把pi   =   4   *   atn(1)定义成公共变量?每个函数都重复了这个式子。
发表于:2007-10-19 15:42:438楼 得分:0
可惜vb没有c++函数重载的概念,否则这个问题很好解决。
给我的感觉,你这几个函数效率太低,为什么不把pi   =   4   *   atn(1)定义成公共变量?每个函数都重复了这个式子。
发表于:2007-10-19 16:03:449楼 得分:0
对不起,我以pi为举例,实际应用于autocad调用excel数据.
如调用jb4703容器法兰功能函数,jb4721功能函数,这些数据在excel.
在excel数据中准备好,顺序调用,才能实现我的目标.
    set   xlsheet   =   xlapp.sheets(3)
    dim   pp(0   to   2)   as   double,   pp1(0   to   2)   as   double
    dim   ent   as   acadentity
    xlsheet.cells(2,   10).value   =   jb4721_t
    xlsheet.cells(3,   10).value   =   jb4703_fm
for   ii   =   2   to   3
    set   ent   =   thisdrawing.objectidtoobject(ee)
   
    for   jj   =   3   to   5
        pp(jj   -   3)   =   0
        pp1(jj   -   3)   =   xlsheet.cells(ii,   jj).value
    next   jj
    ent.move   pp,   pp1
   
    ent.rotate3d   pp,   pp1,   xlsheet.cells(ii,   6).value   *   degreetoradian
    ent.rotate3d   pp,   pp1,   xlsheet.cells(ii,   7).value   *   degreetoradian
    ent.rotate3d   pp,   pp1,   xlsheet.cells(ii,   8).value   *   degreetoradian
next   ii
end   sub


快速检索

最新资讯
热门点击