我在写ActiveX DLL时,在一个类模块中,用了自定义类型,如下:Private Type sStartWord
sMark As String
iTotal As Integer
sBook As String
End TypePrivate m_sStartWord As sStartWord Public Property Get StartWord() As sStartWord
StartWord = m_sStartWord
End PropertyPublic Property Let StartWord(ByVal i_sStartWord As sStartWord)
m_sStartWord = i_sStartWord
End PropertyPublic Function ReadFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch
Dim m_iFileNum As Integer
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Read As #m_iFileNum ''以二进制、只读方式打开文件
Get #m_iFileNum, , m_sStartWord
Close #m_iFileNum
m_iFileNum = -1
Exit Function
catch:End FunctionPublic Function WriteFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch ''错误捕获
Dim m_iFileNum As Integer ''文件号
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Write As #m_iFileNum
Put #m_iFileNum, , m_sStartWord Close #m_iFileNum ''关闭文件
m_iFileNum = -1 ''把文件号和文件长度设为无效值
Exit Function
catch:End Function调试该类时发现,自定义类型在类模块中不能当属性使用,不知该如何解决?
因为我在引用该DLL后,该自定义类型“sStartWord”要作为动态数组,大量使用,不知有否好的解决办法?
sMark As String
iTotal As Integer
sBook As String
End TypePrivate m_sStartWord As sStartWord Public Property Get StartWord() As sStartWord
StartWord = m_sStartWord
End PropertyPublic Property Let StartWord(ByVal i_sStartWord As sStartWord)
m_sStartWord = i_sStartWord
End PropertyPublic Function ReadFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch
Dim m_iFileNum As Integer
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Read As #m_iFileNum ''以二进制、只读方式打开文件
Get #m_iFileNum, , m_sStartWord
Close #m_iFileNum
m_iFileNum = -1
Exit Function
catch:End FunctionPublic Function WriteFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch ''错误捕获
Dim m_iFileNum As Integer ''文件号
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Write As #m_iFileNum
Put #m_iFileNum, , m_sStartWord Close #m_iFileNum ''关闭文件
m_iFileNum = -1 ''把文件号和文件长度设为无效值
Exit Function
catch:End Function调试该类时发现,自定义类型在类模块中不能当属性使用,不知该如何解决?
因为我在引用该DLL后,该自定义类型“sStartWord”要作为动态数组,大量使用,不知有否好的解决办法?
Public Type sStartWord
sMark As String
iTotal As Integer
sBook As String
End TypePrivate m_sStartWord As sStartWordPublic Property Get StartWord() As sStartWord
StartWord = m_sStartWord
End PropertyPublic Property Let StartWord(i_sStartWord As sStartWord)
m_sStartWord = i_sStartWord
End PropertyPublic Function ReadFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch
Dim m_iFileNum As Integer
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Read As #m_iFileNum ''以二进制、只读方式打开文件
Get #m_iFileNum, , m_sStartWord
Close #m_iFileNum
m_iFileNum = -1
Exit Function
catch:End FunctionPublic Function WriteFile(ByVal sFQFilename As String) As Boolean
On Error GoTo catch ''错误捕获
Dim m_iFileNum As Integer ''文件号
m_iFileNum = FreeFile ''取得一个合法文件号 Open sFQFilename For Binary Access Write As #m_iFileNum
Put #m_iFileNum, , m_sStartWord Close #m_iFileNum ''关闭文件
m_iFileNum = -1 ''把文件号和文件长度设为无效值
Exit Function
catch:End Function这样调试似乎不报错,但是不知道能否满足要求。
编译错误:
Private Enum 和用户定义类型不能作为参数、公共过程的返回类型、公共数据成员或公共用户定义类型的字段使用。
百度上类似的帖子:http://zhidao.baidu.com/question/117033901.html