+ Reply to Thread
Results 1 to 4 of 4

programmatic generation of Enum To String functions

  1. #1
    R Avery
    Guest

    programmatic generation of Enum To String functions

    I have the problem right now that i wish i had a function to convert a
    number of a particular enum to string (e.g.,
    ADODB.DataTypeEnum.adDBTimeStamp to "adDBTimeStamp"). It should be
    possible to automatically generate these conversion functions.

    I know it is possible using some complicated object library that i
    forget the name to scan a type library and programmatically iterate
    over interfaces, methods of interfaces, etc, and i believe can read
    enums. Therefore, a perfect application of this object library would
    be to create the functionality that I discussed above. All i would
    have to do is pass the path of the DLL or TLB file, and the name of the
    enum, and the function would return the conversion functions.

    Has anyone done this? Any help would be appreciated.


    For example, it should automatically accept an Enum like this:


    Public Enum cbfPhase
    cbfNotAPhase
    cbfNotStarted
    cbfParsed
    cbfBeta
    cbfData
    cbfDone
    End Enum

    And turn it into these:

    Public Function cbfPhaseToString(ByVal Value As cbfPhase) As String
    ' Method for converting cbfPhase values into a String.
    Select Case Value
    Case cbfNotAPhase
    cbfPhaseToString = "NotAPhase"
    Case cbfNotStarted
    cbfPhaseToString = "NotStarted"
    Case cbfParsed
    cbfPhaseToString = "Parsed"
    Case cbfBeta
    cbfPhaseToString = "Beta"
    Case cbfData
    cbfPhaseToString = "Data"
    Case cbfDone
    cbfPhaseToString = "Done"
    End Select
    End Function


    Public Function StringTocbfPhase(ByVal Value As String) As cbfPhase
    ' Method for converting a String into cbfPhase.
    Select Case Value
    Case "NotAPhase"
    StringTocbfPhase = cbfNotAPhase
    Case "NotStarted"
    StringTocbfPhase = cbfNotStarted
    Case "Parsed"
    StringTocbfPhase = cbfParsed
    Case "Beta"
    StringTocbfPhase = cbfBeta
    Case "Data"
    StringTocbfPhase = cbfData
    Case "Done"
    StringTocbfPhase = cbfDone
    End Select
    End Function


  2. #2
    Emilie
    Guest

    RE: programmatic generation of Enum To String functions

    Hi,
    I notice that in your example of the Enum type you did not declare any
    values to the members. Thus, Enum will automatically assign values such as 0
    or 1. Perhaps using the Type Statement will be more helpful in doing what
    you want. Refer to the Help in the Macro design.

    Emilie

    "R Avery" wrote:

    > I have the problem right now that i wish i had a function to convert a
    > number of a particular enum to string (e.g.,
    > ADODB.DataTypeEnum.adDBTimeStamp to "adDBTimeStamp"). It should be
    > possible to automatically generate these conversion functions.
    >
    > I know it is possible using some complicated object library that i
    > forget the name to scan a type library and programmatically iterate
    > over interfaces, methods of interfaces, etc, and i believe can read
    > enums. Therefore, a perfect application of this object library would
    > be to create the functionality that I discussed above. All i would
    > have to do is pass the path of the DLL or TLB file, and the name of the
    > enum, and the function would return the conversion functions.
    >
    > Has anyone done this? Any help would be appreciated.
    >
    >
    > For example, it should automatically accept an Enum like this:
    >
    >
    > Public Enum cbfPhase
    > cbfNotAPhase
    > cbfNotStarted
    > cbfParsed
    > cbfBeta
    > cbfData
    > cbfDone
    > End Enum
    >
    > And turn it into these:
    >
    > Public Function cbfPhaseToString(ByVal Value As cbfPhase) As String
    > ' Method for converting cbfPhase values into a String.
    > Select Case Value
    > Case cbfNotAPhase
    > cbfPhaseToString = "NotAPhase"
    > Case cbfNotStarted
    > cbfPhaseToString = "NotStarted"
    > Case cbfParsed
    > cbfPhaseToString = "Parsed"
    > Case cbfBeta
    > cbfPhaseToString = "Beta"
    > Case cbfData
    > cbfPhaseToString = "Data"
    > Case cbfDone
    > cbfPhaseToString = "Done"
    > End Select
    > End Function
    >
    >
    > Public Function StringTocbfPhase(ByVal Value As String) As cbfPhase
    > ' Method for converting a String into cbfPhase.
    > Select Case Value
    > Case "NotAPhase"
    > StringTocbfPhase = cbfNotAPhase
    > Case "NotStarted"
    > StringTocbfPhase = cbfNotStarted
    > Case "Parsed"
    > StringTocbfPhase = cbfParsed
    > Case "Beta"
    > StringTocbfPhase = cbfBeta
    > Case "Data"
    > StringTocbfPhase = cbfData
    > Case "Done"
    > StringTocbfPhase = cbfDone
    > End Select
    > End Function
    >
    >


  3. #3
    Jake Marx
    Guest

    Re: programmatic generation of Enum To String functions

    Hi R Avery,

    Not sure if this is what you're looking for, but here's some code that will
    output the list of data type enums (names and values) for the ADO library:

    Sub test()
    Dim tl As TLI.TypeLibInfo
    Dim mi As TLI.MemberInfo


    Set tl = New TypeLibInfo

    tl.ContainingFile = "C:\Program Files\Common " & _
    "Files\System\ado\msado15.dll"

    For Each mi In tl.GetTypeInfo("DataTypeEnum").Members
    Debug.Print mi.Name & ": " & mi.Value
    Next mi
    End Sub


    The reference you're looking for is called "TypeLib Information".

    --
    Regards,

    Jake Marx
    MS MVP - Excel
    www.longhead.com

    [please keep replies in the newsgroup - email address unmonitored]


    R Avery wrote:
    > I have the problem right now that i wish i had a function to convert a
    > number of a particular enum to string (e.g.,
    > ADODB.DataTypeEnum.adDBTimeStamp to "adDBTimeStamp"). It should be
    > possible to automatically generate these conversion functions.
    >
    > I know it is possible using some complicated object library that i
    > forget the name to scan a type library and programmatically iterate
    > over interfaces, methods of interfaces, etc, and i believe can read
    > enums. Therefore, a perfect application of this object library would
    > be to create the functionality that I discussed above. All i would
    > have to do is pass the path of the DLL or TLB file, and the name of
    > the enum, and the function would return the conversion functions.
    >
    > Has anyone done this? Any help would be appreciated.
    >
    >
    > For example, it should automatically accept an Enum like this:
    >
    >
    > Public Enum cbfPhase
    > cbfNotAPhase
    > cbfNotStarted
    > cbfParsed
    > cbfBeta
    > cbfData
    > cbfDone
    > End Enum
    >
    > And turn it into these:
    >
    > Public Function cbfPhaseToString(ByVal Value As cbfPhase) As String
    > ' Method for converting cbfPhase values into a String.
    > Select Case Value
    > Case cbfNotAPhase
    > cbfPhaseToString = "NotAPhase"
    > Case cbfNotStarted
    > cbfPhaseToString = "NotStarted"
    > Case cbfParsed
    > cbfPhaseToString = "Parsed"
    > Case cbfBeta
    > cbfPhaseToString = "Beta"
    > Case cbfData
    > cbfPhaseToString = "Data"
    > Case cbfDone
    > cbfPhaseToString = "Done"
    > End Select
    > End Function
    >
    >
    > Public Function StringTocbfPhase(ByVal Value As String) As cbfPhase
    > ' Method for converting a String into cbfPhase.
    > Select Case Value
    > Case "NotAPhase"
    > StringTocbfPhase = cbfNotAPhase
    > Case "NotStarted"
    > StringTocbfPhase = cbfNotStarted
    > Case "Parsed"
    > StringTocbfPhase = cbfParsed
    > Case "Beta"
    > StringTocbfPhase = cbfBeta
    > Case "Data"
    > StringTocbfPhase = cbfData
    > Case "Done"
    > StringTocbfPhase = cbfDone
    > End Select
    > End Function



  4. #4
    R Avery
    Guest

    Re: programmatic generation of Enum To String functions

    Thanks Jake. Using this would enable the automatic generation of the
    functions above for Enums in DLLs. This is precisely what i need.


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1