以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  怎么样定义一个常数?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=148215)

--  作者:fwoods
--  发布时间:2017/2/27 11:20:09
--  怎么样定义一个常数?
我做了一个巨大的vbs程序,然后加密了,希望暴露一部分配置给用户。有一个参数是内存缓冲区的大小,希望根据用户的意愿来改一个缓冲数组的大小。
我在一个不加密的模块  global 里面写了这样一句  
const MAX_LINE_COUNT = 3000


然后在我的代码的某个类的声明部分这么写:
Private PointList(MAX_LINE_COUNT)


然后这里就报错    需要一个整型常数   

会不会是金字塔没有先解析global,然后在解析类模块?又或者我这样写本身就有问题,谢谢。

--  作者:王锋
--  发布时间:2017/2/27 19:59:00
--  

金字塔使用的是标准的VBS语法,至于你遇到的问题,由于我们没有能重现的环境,因此暂时无法帮你解答,你可以搜索一下网上的一些现有资料呢?


--  作者:fwoods
--  发布时间:2017/2/27 22:25:45
--  
请看我重新
图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:333.png
图片点击可在新窗口打开查看
做的测试代码,新建了文件global_var  里面只有一个常数定义,新建一个类  里面只有一个数组声明。
其他代码是我的其他项目,都是运行正常的。

--  作者:王锋
--  发布时间:2017/2/28 15:45:28
--  

你是对类模块的使用上理解有问题的吧?

对于常量的定义要在函数过程中使用的,你不能让他成为一个函数的变量名字的。

我做个测试例子并改正了你的代码

 

类模块

Public Function PointList(MyMe)
    MyMe = MAX_LINE_COUNT
    MsgBox MyMe
End Function

 

调用范例

Sub Test()
   Set oo = New TestConst
   oo.PointList(0)
End Sub


--  作者:fwoods
--  发布时间:2017/2/28 16:30:33
--  
PointList是个数组,不是函数。


后来我找到问题了,原来声明静态数组的时候不能用常量代替整数。以前C++的习惯老影响。
我后来改成动态数组就可以了。就是
TestConst类里面改成 
Public PointList()

然后class初始化的时候
redim PointList(MAX_COUNT)
就通过了。

最后还是谢谢王总。
[此贴子已经被作者于2017-2-28 16:31:17编辑过]