我在写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”要作为动态数组,大量使用,不知有否好的解决办法?

解决方案 »

  1.   

    Option Explicit
    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这样调试似乎不报错,但是不知道能否满足要求。
      

  2.   

    出错内容:
    编译错误:
    Private Enum 和用户定义类型不能作为参数、公共过程的返回类型、公共数据成员或公共用户定义类型的字段使用。
      

  3.   

    奇怪,在我这里编译dll成功?
      

  4.   

    为此已耽误我一天时间了,已决定放弃DLL内的该类了,决定写在软件内的标准模块里了,不过郁闷的是,有五、六个程序,都要用到此模块,郁闷~~
      

  5.   

    在百度上有类似的帖子,虽然我也按那个办法拆分自己的数据类型,调试成功,但我自己的类型过多(上面代码只是其中的一小部分),感觉比较麻烦,终究放弃了谢谢你关心和帮助一新人
    百度上类似的帖子:http://zhidao.baidu.com/question/117033901.html