我连问题都不知道该怎么提了,请帮忙看一下

fly_rain 2003-03-27 11:09:51
如果一次需要传递很多参数,这时怎么办?
请介绍一下使用type,对象,在函数中怎么使用这些东西?
publict type testtype
aa as interger
bb as string
cc as boolen
end type

publict dd as testtype

publict function ee() as testtype
.....
....
.....
ee.aa=....
ee.bb=...
ee.cc=...

end function

我不知道这样写对不对,主要目的就是,定义一个类型,然后传这个类型的各个属性的值进来,然后对这个类型的各属性的值进行更改,然后把这个类型的各个属性值传回来。

比如说,我现在想知道ee.aa的属性值是多少,这时候怎么办?唉,我也晓不得该咋个问法,因为我自己都搞不清我自己想知道什么,各位帮下忙。
...全文
26 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinshou1979330 2003-03-27
  • 打赏
  • 举报
回复
学习

lxcc 2003-03-27
  • 打赏
  • 举报
回复
蹭分
weill 2003-03-27
  • 打赏
  • 举报
回复
这个问题好简单啊,呵。
看看别人的例程就明白了。
比如我给你一个,这是一个从二进制文件中读一个Chr_RS结构的数据的问题,也许你看了会明白一些。

'模块中:
Option Explicit
'以下是数据结构声明
Public Type Chr_RS
CHR1B As Byte
CHR1 As String * 15
CHR2B As Byte
CHR2 As String * 14
CHRIDB As Byte
CHRID As String * 10
CHR_DEL As Byte
End Type

'以下是函数,在这儿是从指定点开始读出Chr_RS结构的数据。
Public Function Chr_R_F(ID_C As String, Chr_C As String) As Chr_RS
Dim Posi_Me_C As Double '初始点
Dim POSI_Me_Go As Double '每段数据偏移量
Dim Path_Chr_DB As String '二进制文件的路径设定
Dim ChrSXX As Chr_RS '临时的Chr_RS。

Posi_Me_C = 137
POSI_Me_Go = 72

Path_Chr_DB = "C:" & "\Hum.DB"
Open Path_Chr_DB For Binary As #3 '以二进制方法打开文件"C:\Hum.DB"
Get #3, Posi_Me_C, ChrSXX '以二进制方法读一组记录。
Close #3 '读完后关闭已打开文件
Chr_R_F = ChrSXX '将读出的数据传给函数用以返回。
Chr_R_F.Chr_DEL = -1 '您可以随你的高兴对返回的结构中的任一单元进行改动。
End Function

'程序中,下面的东东太容易了,我就不细注解了。
Private Sub Command1_Click()
Dim aa As Chr_RS
aa = Chr_R_F("0", "0")
Print Left(aa.CHRID, CInt(aa.CHRIDB))
Print Left(aa.CHR1, CInt(aa.CHR1B))
Print Left(aa.CHR2, CInt(aa.CHR2B))
Print aa.CHR_DEL
End Sub
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
谢谢,非常感谢。我吃了饭来结帐。多谢
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
Public x As Integer
Public y As String
Public z As Boolean

Public Type TestType
aa As Integer
bb As String
cc As Boolean
End Type



Public Function ee() As TestType
ee.aa = 12345
ee.bb = "abcdef"
ee.cc = True
End Function



Public Function ff(ByRef xx As TestType)
x = xx.aa
y = xx.bb
z = xx.cc
End Function

'Form
prviate my as testtype
Private Sub Command1_Click()
my=ee
msgbox my.aa
msgbox my.bb
msgbox my.cc
end sub
可不可以?
Cooly 2003-03-27
  • 打赏
  • 举报
回复
修改aa时,bb,cc的值不变,但要将结构一起传到函数中,因为你的函数参数是定义为ee
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
也就是说,我只想更改x的值,我也只传ee.aa一个值行吗?
Cooly 2003-03-27
  • 打赏
  • 举报
回复
不要放到Class Module中
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
那如果我想call ff(ee.aa)可不可以?
Cooly 2003-03-27
  • 打赏
  • 举报
回复
'Module

Public x As Integer
Public y As String
Public z As Boolean

Public Type TestType
aa As Integer
bb As String
cc As Boolean
End Type



Public Function ee() As TestType
ee.aa = 12345
ee.bb = "abcdef"
ee.cc = True
End Function



Public Function ff(ByRef xx As TestType)
x = xx.aa
y = xx.bb
z = xx.cc
End Function

'Form


Private Sub Command1_Click()
MsgBox ee.aa
MsgBox ee.bb
MsgBox ee.cc
End Sub
Private Sub Command2_Click()
Call ff(ee)
MsgBox x
MsgBox y
MsgBox z
End Sub
flyhot 2003-03-27
  • 打赏
  • 举报
回复
gz
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
我想把上面的函数放到类模块中应该怎么改?我定义为public就不行,定义为private窗体中又找不到
Cooly 2003-03-27
  • 打赏
  • 举报
回复
Dim x As Integer
Dim y As String
Dim z As Boolean

Private Type TestType
aa As Integer
bb As String
cc As Boolean
End Type



Private Function ee() As TestType
ee.aa = 12345
ee.bb = "abcdef"
ee.cc = True
End Function

Private Sub Command1_Click()
MsgBox ee.aa
MsgBox ee.bb
MsgBox ee.cc
End Sub

Private Function ff(ByRef xx As TestType)
x = xx.aa
y = xx.bb
z = xx.cc
End Function

Private Sub Command2_Click()
Call ff(ee)
MsgBox x
MsgBox y
MsgBox z
End Sub
Cooly 2003-03-27
  • 打赏
  • 举报
回复
直接赋值就可以,而且随意对某个元素赋值。
fly_rain 2003-03-27
  • 打赏
  • 举报
回复
哈,下面的这个最好。解决了我读的问题了。先送50分记在帐上。
另一问题是写的问题了。
我现在还需要改写ee.aa或ee.bb之类的内容
private function ff(byval ff as testtype)
aaa=ff.aa
bbb=ff.bb
ccc=ff.cc
end function
这样可以吗?(注:有时我只给ff.aa,那么我就只把aaa改为ff.aa,其它各项不改变,可以吗?
Cooly 2003-03-27
  • 打赏
  • 举报
回复
函数也可以不带参数

Private Type TestType
aa As Integer
bb As String
cc As Boolean
End Type



Private Function ee() As TestType
ee.aa = 12345
ee.bb = "abcdef"
ee.cc = True
End Function

Private Sub Command1_Click()
MsgBox ee.aa
MsgBox ee.bb
MsgBox ee.cc
End Sub
zjcxc 2003-03-27
  • 打赏
  • 举报
回复
关注
Cooly 2003-03-27
  • 打赏
  • 举报
回复
Private Type TestType
aa As Integer
bb As String
cc As Boolean
End Type



Private Function ee(a1 As Integer, b1 As String, c1 As Boolean) As TestType
ee.aa = a1
ee.bb = b1
ee.cc = c1
End Function

Private Sub Command1_Click()
MsgBox ee(1, "2", True).cc
End Sub

7,763

社区成员

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

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