麻烦各位帮我把这个洗牌函数做 DLL

zhuhuofong 2009-06-26 10:23:59
'函数功能:返回一个洗牌函数
Function RndNumber(ByVal Ubounds As Integer) As Integer() 'ubounds参数 传入一副牌共多少张
Dim ValNumber() As Integer
Dim Jh As New Collection
For i = 1 To Ubounds '点牌
Jh.Add i
Next
Randomize
For i = 1 To Jh.Count '执行洗牌动作
temp = Int(Rnd * Jh.Count + 1)
ReDim Preserve ValNumber(i)
ValNumber(i) = Jh.Item(temp)
Jh.Remove temp
Next
RndNumber = ValNumber '下一个动作是切牌,(命名为:洗牌函数)
End Function

前两天问过怎样把函数做成 Dll,老马已经告诉我啦。我就是整不出来,所以再发一个英雄贴。敬请各路英雄好汉帮帮在下,感激不尽。做成类或DLL 或OCX 都中啊 俺太笨了,如果太深奥了,俺也整不明白,白搭了,哈~~~
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mhm0517 2009-06-26
  • 打赏
  • 举报
回复
不要后面改,要最开始的时候.你建立一个新的,你再改一下.
如果是中文.默认为 工程1 (包括工程属性里面的.)
---------------------------------
名称与已存在的模块、工程或对象冲突
只有是重名才会出现上面的错误.
--------------------------------
zhuhuofong 2009-06-26
  • 打赏
  • 举报
回复
我改了所有的默认名称,还是不行啊。

引用时提示,名称与已存在的模块、工程或对象冲突
mhm0517 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhuhuofong 的回复:]
我还是整不出来,引用时提示,名称与已存在的模块、工程或对象冲突
这是怎么会事啊,改了DLL默认的工程名也不行。晕。
[/Quote]
你在建立DLL的时候,将类名与保存时候的方件名都改一下,不要使用默认的.
-----------------
主要原因是因为:你引用的DLL的默认工程名与你现在新建立的工程名重名.(因为都是默认的)
孤独剑_LPZ 2009-06-26
  • 打赏
  • 举报
回复
调用,将控件加入工程,拖入窗体,
调用方法:
dim i as long
i= 控件名.RndNumber 54
zhuhuofong 2009-06-26
  • 打赏
  • 举报
回复
我还是整不出来,引用时提示,名称与已存在的模块、工程或对象冲突
这是怎么会事啊,改了DLL默认的工程名也不行。晕。
孤独剑_LPZ 2009-06-26
  • 打赏
  • 举报
回复
教你做ocx
1. 新建工程,选择Action OCX

2. 将下面的代码粘上

Option Explicit
'函数功能:返回一个洗牌函数
Public Function RndNumber(ByVal Ubounds As Integer) As Integer() 'ubounds参数 传入一副牌共多少张
Dim ValNumber() As Integer
Dim Jh As New Collection
For i = 1 To Ubounds '点牌
Jh.Add i
Next
Randomize
For i = 1 To Jh.Count '执行洗牌动作
temp = Int(Rnd * Jh.Count + 1)
ReDim Preserve ValNumber(i)
ValNumber(i) = Jh.Item(temp)
Jh.Remove temp
Next
RndNumber = ValNumber '下一个动作是切牌,(命名为:洗牌函数)
End Function

3. 生成ocx,图上是生成dll,你建的是ocx,这里就显示生成ocx

mhm0517 2009-06-26
  • 打赏
  • 举报
回复
你先调用别的 DLL 文件不?
会就好说了.

1.建议上面那个方法,前面加个 public 关键字,表示是公共的.
2.生成DLL后. 新建议一个工程. 调用DLL
3.在对象浏览器里面可以看到这个DLL的对象了.
4.引用这个类就行了,引用方法与引用所有的类的方法一样.
如:
dim NewCls as new Class1(这个是你那个DLL中在对象浏览器中可以看到的类)
newcls.RndNumber '这里可以使用方法了.
zhuhuofong 2009-06-26
  • 打赏
  • 举报
回复
怎么调用啊。前两天试了一下,不知道怎么调用,老出错。
mhm0517 2009-06-26
  • 打赏
  • 举报
回复
1.打开VB6.0
2.选择 建立DLL应用程序.
3.点击确定按扭
4.将代码复制至代码窗口
5.点击菜单 文件=>编译成DLL=>选择保存位置.
6.OK.
zzyong00 2009-06-26
  • 打赏
  • 举报
回复
拿到外面就不用preserve了
zzyong00 2009-06-26
  • 打赏
  • 举报
回复
ReDim Preserve ValNumber(i)
为什么不拿到循环外面的呢,
改为ReDim Preserve ValNumber(Jh.Count)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧