Can you create Classes/Types progammatically with vb6? 
Author Message
 Can you create Classes/Types progammatically with vb6?

Hi

Subject line says it all! I know the question is simple, but I suspect
the answer may not be (unless of course it is "No!").

I've had a look at TypeLib32.dll but that seems to permit me only to
read info about types rather than create a new one.

If you are interested why, I am trying to understand monads and thought
that trying to create one in vb6 may help my understanding - perhaps
I've fallen at the first fence. This  link has a reasonably simple
explanation
http://www.*-*-*.com/
which I'd wondered about implementing

Basically I think I need to create a function which receives an object
of some type (could be long/int/string/ or infact any custom type) and
create a new type which has this type as a property plus has an error

Now I know I *may* be able to do this late bound with objects/variants,
but I was hoping in the first instant to try and do it early.

So, for example, if I have a long I'd be looking to create a class like

Public Class MaybeType
        Public Value as Long
        Public ErrorObject as ErrObject
End Class

If I had a string, the class would be

Public Class MaybeType
        Public Text as String
        Public ErrorObject as ErrObject
End Class

(Obviously I'd be using properties but, this is just to give an example)

So if you have any ideas, pointers to sample code where this has done
then I'd be grateful. I've had a look thru Matt Curland's book and
couldn't see anything obvious - though there was stuff in there which
I'm sure I'd need to use.

Thx

Simon



Mon, 16 Jan 2012 16:50:15 GMT  
 Can you create Classes/Types progammatically with vb6?
On Thu, 30 Jul 2009 09:50:15 +0100, Simon Woods

Quote:

>Hi

>Subject line says it all! I know the question is simple, but I suspect
>the answer may not be (unless of course it is "No!").

8< snipped >8

The simplest option would be :

'Class Monad
Option Explicit
Private mValue As Variant
Private mExtraInfo As String
Public Property Get/Let/Set Value() As Variant
    'default property; holds the 'wrapped' variable
End Property
Public Property Get/Let ExtraInfo() As String
    'holds your additional data
End Property

You could extend the logic further to allow for an arbitrary number of
extra fields. In that case, mValue would be an array of Variants, you
would add a "mNames() As String" variable, modify the public Value
property to accept a string parameter to indicate which 'custom' field
you're accessing, and replace 'ExtraInfo As String' with 'WrappedValue
As Variant'. If the Value property is indeed the default, you could
use bang notation to reduce keystrokes:

Public Function Process(ByVal vData As Variant) As Monad
    Dim MonadX As Monad
    '... actual processing goes here ...
    Set MonadX = New Monad
    'Return the original parameter
    MonadX.WrappedValue = vData
    'Now add some "custom" values
    MonadX!Author = "Simon Woods"
    MonadX!Comments = "Some people hate bang notation!"
    Set Process = MonadX
End Function

The actual mechanism behind mapping named values is up to you. The
simplest and least elegant would be the aforementioned name/value
arrays. Any method will have its trade-offs. Personally, I'd use Olaf
Schmidt's cSortedDictionary, as it exposes a handy "Exists" function.

If this sounds like gibberish, blame my current lack of caffeine, and
just ask for further clarification. :)

Quote:
>Thx

>Simon

        J.
    Jeremiah D. Seitz
    Omega Techware
    http://www.omegatechware.net


Mon, 16 Jan 2012 21:49:44 GMT  
 Can you create Classes/Types progammatically with vb6?


Quote:
> Subject line says it all! I know the question is simple, but I suspect
> the answer may not be (unless of course it is "No!").
...
> Now I know I *may* be able to do this late bound with objects/variants,
> but I was hoping in the first instant to try and do it early.
...
> So if you have any ideas, pointers to sample code where this has done
> then I'd be grateful. I've had a look thru Matt Curland's book and
> couldn't see anything obvious - though there was stuff in there which
> I'm sure I'd need to use.

Due to the subject matter, I think I'd start off a bit simplistic.

Any value can be represented in a string.  An object, of course, needs
a reference (pointer).  So those are the two types I'd use internally.
The trouble with that is when you assign a value to a string, you could
loose its intended type. (Long, Currency, Double, etc).

So how about storing the value with its intended type?  You could
concatenate that in a string, allowing the Val function to pull the value
out.

Something like:

'  [  Mony class code  ]
Option Explicit
Public Err As ErrObject
Private mObj As Object
Private mData As String

Const ObjRef = "00|Object="

Public Property Get Value() As String
    Value = VBA.Val(mData)
End Property

Public Property Let Value(ByVal NewValue As String)
  Dim bar As Long
  If InStr(NewValue, "|") Then
    mData = NewValue
  Else
    bar = InStr(mData, "|")
    If bar > 0 Then
      ' TODO: Validate for type
      mData = NewValue & Mid$(mData, bar)
    Else
      mData = CStr(NewValue) & "|UnKnown"
    End If
  End If
End Property

Public Property Get Obj() As Object
  Set Obj = mObj
End Property

Public Property Set Obj(NewValue As Object)
  Set mObj = NewValue
  mData = ObjRef & TypeName(NewValue)
End Property

Public Function Val() As String
Dim ref As Mony
  Set ref = Me
  Do While TypeName(ref.Obj) = TypeName(Me)
    Set ref = ref.Obj
  Loop
  Val = ref.Value
End Function

Then, after setting the Value property to be the default property
(Which most don't like, but in this case its handy), you can use
them in this fashion:

Private Sub Form_Load()
Dim A As New Mony
Dim B As New Mony
Dim C As New Mony

  A = 5.02  ' Value assignment
  B = "2|Byte" ' Assignment with type
  Debug.Print A, B
  A = B  ' Cross assignment (Clone)
  Debug.Print A, B
  A = 7.01
  Debug.Print A, B  ' Still independant

  Set C.Obj = Me ' Object assignment
  C.Obj.Caption = "Test"

  Set C.Obj = A  ' Assignment reference
  Debug.Print C, C.Obj, "C="; C.Val
  Set A.Obj = B  ' Indirect reference
  Debug.Print C, C.Obj, "C="; C.Val

  ' Look out!
  Set B.Obj = A  ' Circular reference
  'Debug.Print C, C.Obj, "C="; C.Val  ' Hangs!

  ' Teardown
  Set B.Obj = Nothing
  Set A.Obj = Nothing
  Set C.Obj = Nothing

End Sub

That may help you get started, but its all a bit new to me....

HTH
LFS



Mon, 16 Jan 2012 22:00:59 GMT  
 Can you create Classes/Types progammatically with vb6?
   Confusing. I've just looked at several articles
explaining monads and still don't get it. It drives
me crazy when people try to explain things who
can't grasp them with abstract intellect. I find
it very difficult to understand something without
first understanding the premise. The author at
your link even goes so far as to tell his readers
that they shouldn't try to understand the premise:

"The best way to grok monads is to not try to understand what they are
abstractly first."

   I guess I'm getting a bit tangential here, but
it's a common problem. One asks, "Could someone
explain such and such?". And more often than
not someone answers with, "Here, try this code."
In other words, "No, I can't explain such and such
but I know how to use it in a rote way." That's fine
for rote learners. (Are most programmers rote learners
for some reason?) But it's nearly incomprehensible
to those of us who operate with abstract intellect and
need to understand the concept first.

  Given all of that, I'm also trying to understand
your question. You want to understand monads...
why? What do you actually need to do? How might
a monad be the best way? What's the difference
between a class 2 or more properties, and a monad?
for that matter, why can't you just use a function
that goes like this?

Function DoIt(InOutString as String, OutErrorString as String, OutErrorVal
as Long)

And can somebody actually explain what a monad is?
The word just means "a single unit", which doesn't
say much.

Quote:

> Subject line says it all! I know the question is simple, but I suspect
> the answer may not be (unless of course it is "No!").

> I've had a look at TypeLib32.dll but that seems to permit me only to
> read info about types rather than create a new one.

> If you are interested why, I am trying to understand monads and thought
> that trying to create one in vb6 may help my understanding - perhaps
> I've fallen at the first fence. This  link has a reasonably simple
> explanation

http://www.reddit.com/r/programming/comments/64th1/monads_in_python_i...
ction_code_you_can_and/c02u9mb
Quote:
> which I'd wondered about implementing

> Basically I think I need to create a function which receives an object
> of some type (could be long/int/string/ or infact any custom type) and
> create a new type which has this type as a property plus has an error

> Now I know I *may* be able to do this late bound with objects/variants,
> but I was hoping in the first instant to try and do it early.

> So, for example, if I have a long I'd be looking to create a class like

> Public Class MaybeType
> Public Value as Long
> Public ErrorObject as ErrObject
> End Class

> If I had a string, the class would be

> Public Class MaybeType
> Public Text as String
> Public ErrorObject as ErrObject
> End Class

> (Obviously I'd be using properties but, this is just to give an example)

> So if you have any ideas, pointers to sample code where this has done
> then I'd be grateful. I've had a look thru Matt Curland's book and
> couldn't see anything obvious - though there was stuff in there which
> I'm sure I'd need to use.

> Thx

> Simon



Mon, 16 Jan 2012 23:18:56 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:
> End Class

VB Classic(VB6 or lower) doesn't have "End Class". This is a VB6 and earlier
group(VB Classic). VB.Net and all dotnet groups have either "dotnet" or
"vsnet" in the group name. Please use the following
group instead:




Mon, 16 Jan 2012 23:40:43 GMT  
 Can you create Classes/Types progammatically with vb6?
Thx. See in-line

Quote:

>    Confusing. I've just looked at several articles
> explaining monads and still don't get it. It drives
> me crazy when people try to explain things who
> can't grasp them with abstract intellect. I find
> it very difficult to understand something without
> first understanding the premise. The author at
> your link even goes so far as to tell his readers
> that they shouldn't try to understand the premise:

> "The best way to grok monads is to not try to understand what they are
> abstractly first."

>    I guess I'm getting a bit tangential here, but
> it's a common problem. One asks, "Could someone
> explain such and such?". And more often than
> not someone answers with, "Here, try this code."
> In other words, "No, I can't explain such and such
> but I know how to use it in a rote way." That's fine
> for rote learners. (Are most programmers rote learners
> for some reason?) But it's nearly incomprehensible
> to those of us who operate with abstract intellect and
> need to understand the concept first.

Well having read a few of the papers explaining it theoretically, which
I didn't understand either, I thought that perhaps if I could try and
code it maybe it'd shed some light on what it is trying to achieve! I
just don't know if VB6 can manage it. VB6 is the language I'm most
familiar with ... but perhaps it's not a good idea to try and understand
monads with it.

Wadlers - The essense of functional programming is meant to be THE paper
explaining monads (from a more theoretical perspective)!
http://portal.acm.org/citation.cfm?id=143169 (see the pdf.) But there
are plenty of other attempts to explain monads.

Quote:
>   Given all of that, I'm also trying to understand
> your question. You want to understand monads...
> why? What do you actually need to do? How might
> a monad be the best way? What's the difference
> between a class 2 or more properties, and a monad?
> for that matter, why can't you just use a function
> that goes like this?

Yep. These are the kind of questions I'm trying to get my head round. It
may be that the function you've suggested provides the best mechanism
but until I understand monads, it is difficult to know for sure.
Obviously there was a time when I was learning OO and just didn't get
it. I hope it is a similar process!

Quote:
> And can somebody actually explain what a monad is?
> The word just means "a single unit", which doesn't
> say much.

Indeed!


Tue, 17 Jan 2012 00:11:16 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:



>> End Class

> VB Classic(VB6 or lower) doesn't have "End Class". This is a VB6 and earlier
> group(VB Classic). VB.Net and all dotnet groups have either "dotnet" or
> "vsnet" in the group name. Please use the following
> group instead:

My bad ... sorry ... I was just air coding ... (yes I do use VB.Net but
it already has monads, apparently!)


Tue, 17 Jan 2012 00:11:43 GMT  
 Can you create Classes/Types progammatically with vb6?


Quote:
> > And can somebody actually explain what a monad is?
> > The word just means "a single unit", which doesn't
> > say much.

> Indeed!

How about this:  A monad is an immutable value, or a function.
Assume a value could be a number, or list, or table, or tree, etc...

That's why I think its going to be difficult to implement functional programming
in VB6, because its going to be delicate work to make some class represent
both a value (easy) or a function (tricky).

For a little demonstration of combining monads, check this (at about 25 minutes into the show).
  http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPa...

LFS



Tue, 17 Jan 2012 02:03:59 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:

>>> And can somebody actually explain what a monad is?
>>> The word just means "a single unit", which doesn't
>>> say much.

>> Indeed!

> How about this:  A monad is an immutable value, or a function.
> Assume a value could be a number, or list, or table, or tree, etc...

> That's why I think its going to be difficult to implement functional programming
> in VB6, because its going to be delicate work to make some class represent
> both a value (easy) or a function (tricky).

> For a little demonstration of combining monads, check this (at about 25 minutes into the show).
>    http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPa...

Thx Larry

With a bit of playing I've managed to create something. How much it
captures the essense of the Maybe Monad I'm not sure!!

Private Sub RunTests()

     Dim l_oInnerFunction As IFunction
     Dim l_oOuterFunction As IFunction
     Dim l_oResult   As IValue

     Set l_oInnerFunction = Divide(Mlng(2), Mlng(1))
     Set l_oOuterFunction = Divide(Mlng(6), l_oInnerFunction)
     Set l_oResult = l_oOuterFunction.Invoke
     Debug.Print l_oResult.Value, l_oResult.IsNothing

     'returns 3, False

     Set l_oInnerFunction = Divide(Mlng(3), Mlng(0))
     Set l_oOuterFunction = Divide(Mlng(9), l_oInnerFunction)
     Set l_oResult = l_oOuterFunction.Invoke
     Debug.Print l_oResult.Value, l_oResult.IsNothing

     'returns 0, True

End Sub

(The lazy evaluation is quite nice. There's a recursive process which
evaluates all the nested functions when the outer function is invoked.
At least it works for this simple example!)

But in reality, I think I'm pretty much layering another type system and
operators for handling them on top of VBs. see MLng and MDiv.

If you are interested these are probably the most salient bits. (TBH,
though, I'm still not too sure what it gives you.)

--- IFunction Interface

Public Function Invoke() As IValue: End Function

--- IValue Interface

Public Property Get Value() As Variant: End Property
Public Property Get IsNothing() As Boolean: End Property

--- Builders

Public Function MLng(ByVal p_nValue As Long) As IValue

     Dim l_oMLong As MLong

     Set l_oMLong = New MLong
     l_oMLong.Value = p_nValue

     Set MLng = l_oMLong

End Function

Public Function Divide(ByVal p_oValue1 As IValue, ByVal p_oValue2 As
IValue) As IFunction

     Dim l_oFunction As MDiv

     Set l_oFunction = New MDiv
     l_oFunction.Addargs p_oValue1, p_oValue2

     Set CreateDivFunction = l_oFunction

End Function

--- MDiv class (effectively overriding VBs)

Implements IFunction
Implements IValue

Private m_oValue1   As IValue
Private m_oValue2   As IValue
'

Public Sub Addargs(ByVal p_oValue1 As IValue, ByVal p_oValue2 As IValue)

     Set m_oValue1 = p_oValue1
     Set m_oValue2 = p_oValue2

End Sub

Private Sub Class_Terminate()

     Set m_oValue1 = Nothing
     Set m_oValue2 = Nothing

End Sub

Private Function IFunction_Invoke() As IValue

     Dim l_oResult As MLong

     Set l_oResult = New MLong

     If TypeOf m_oValue1 Is IFunction Then
         Set m_oValue1 = InvokeFunction(m_oValue1)
     ElseIf TypeOf m_oValue2 Is IFunction Then
         Set m_oValue2 = InvokeFunction(m_oValue2)
     End If

     If m_oValue2.Value = 0 Then
         l_oResult.IsNothing = True
     Else
         l_oResult.Value = m_oValue1.Value / m_oValue2.Value
     End If

     Set IFunction_Invoke = l_oResult

End Function

--- Helpers

Public Property Get InvokeFunction(ByVal p_oFunction As IFunction) As IValue
     Set InvokeFunction = p_oFunction.Invoke
End Property



Tue, 17 Jan 2012 17:22:58 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:


>>>> And can somebody actually explain what a monad is?
>>>> The word just means "a single unit", which doesn't
>>>> say much.

>>> Indeed!

>> How about this: A monad is an immutable value, or a function.
>> Assume a value could be a number, or list, or table, or tree, etc...

>> That's why I think its going to be difficult to implement functional
>> programming
>> in VB6, because its going to be delicate work to make some class
>> represent
>> both a value (easy) or a function (tricky).

>> For a little demonstration of combining monads, check this (at about
>> 25 minutes into the show).
>> http://mschnlnine.vo.llnwd.net/d1/ch9/0/2/3/4/4/4/BeckmanStateMonadPa...

So it simplifies down somewhat.

     Dim l_oInnerFunction As IFunction
     Dim l_oOuterFunction As IFunction

     Set l_oInnerFunction = MDivide(2, 1)
     Set l_oOuterFunction = MDivide(6, l_oInnerFunction)
     Debug.Print l_oOuterFunction.Value, IsEmpty(l_oOuterFunction.Value)

     Set l_oInnerFunction = MDivide(6, 4)
     Set l_oOuterFunction = MDivide(0, l_oInnerFunction)
     Debug.Print l_oOuterFunction.Value, IsEmpty(l_oOuterFunction.Value)

     Set l_oInnerFunction = MDivide(3, 0)
     Set l_oOuterFunction = MDivide(9, l_oInnerFunction)
     Debug.Print l_oOuterFunction.Value, IsEmpty(l_oOuterFunction.Value)

I found I could get rid of the IValue interface and just pass everything
around as an IFunction (which in trying to emulate FP you'd probably
expect!)

--- IFunction

Public Function Invoke() As IFunction: End Function

Public Property Get Value() As Variant: End Property

--- Builders

Public Function MDivide(ByVal p_vValue1 As Variant, ByVal p_vValue2 As
Variant) As IFunction

     Dim l_oFunction As MDiv

     Set l_oFunction = New MDiv
     l_oFunction.Addargs MVar(p_vValue1), MVar(p_vValue2)

     Set MDivide = l_oFunction

End Function

Private Function MVar(ByVal p_vVariable As Variant) As IFunction

     Select Case VarType(p_vVariable)
     Case vbLong, vbInteger
         Set MVar = MLng(CLng(p_vVariable))
     Case Else
         Set MVar = p_vVariable
     End Select

End Function

--- MDiv class

Implements IFunction

Private m_oValue1   As IFunction
Private m_oValue2   As IFunction
'

Public Sub Addargs(ByVal p_oValue1 As IFunction, ByVal p_oValue2 As
IFunction)

     Set m_oValue1 = p_oValue1
     Set m_oValue2 = p_oValue2

End Sub

Private Sub Class_Terminate()

     Set m_oValue1 = Nothing
     Set m_oValue2 = Nothing

End Sub

Private Function Invoke() As IFunction

     Dim l_oResult As MLong

     Set l_oResult = New MLong
     Set m_oValue1 = m_oValue1.Invoke
     Set m_oValue2 = m_oValue2.Invoke

     If m_oValue2.Value <> 0 And IsNumeric(m_oValue2.Value) Then
         l_oResult.Value = m_oValue1.Value / m_oValue2.Value
     Else
         l_oResult.IsNothing = True
     End If

     Set Invoke = l_oResult

End Function

Private Function IFunction_Invoke() As IFunction
     Set IFunction_Invoke = Invoke
End Function

Private Property Get IFunction_Value() As Variant
     IFunction_Value = Invoke.Value
End Property

In relation to the MaybeMonad, according to wikipedia

"In object-oriented programming terms, the type construction would
correspond to the declaration of the monadic type, the unit function
takes the role of a constructor method, and the binding operation
contains the logic necessary to execute its registered callbacks (the
monadic functions)."

Given the above definition, I reckon that
a) the type constructor is MLong (which effectively extends VBs long type
b) the unit function is the MVar function which creates an instance of
the monadic type
c) the binding operation is the implementation in the IFunction_Invoke
which plums it all together sequentially.

Perhaps this is a monadic - though somehow I wonder whether the same
could be said for every program!

What is potentially nice is the ability to load up a "programs-worth" of
IFunctions ready for execution.

Someone please feel free to correct me!

Simon



Tue, 17 Jan 2012 20:10:27 GMT  
 Can you create Classes/Types progammatically with vb6?


Quote:
> Perhaps this is a monadic - though somehow I wonder whether the same
> could be said for every program!

Its still a bit greek to me....

Quote:

> What is potentially nice is the ability to load up a "programs-worth" of
> IFunctions ready for execution.

Forgive me for stating the obvious but, if that stuff really interests you,
perhaps it would be better to pick up a language designed for that
paradigm, (eg. http://www.haskell.org)

Not so???
LFS



Wed, 18 Jan 2012 08:03:01 GMT  
 Can you create Classes/Types progammatically with vb6?

Hi Simon,

The short answer is: No, not in VB6.

In VB.NET (or any .NET language) you could, and in varying degrees of
completeness depending on how dynamic you needed your monads to be.

In simple terms to achieve what you've defined below (i.e. take any type and
effectively convert it to <type> + Error variable) it would be as simple as
declaring a single genericised class, Monad(Of T) where T is the type you
pass in and Monad has two properties - an Error property and a Value (of
type T) property.

"T" could be anything from a simple string to a delegate to a function, and
from what I gather the basic premise of Monads would require the latter.  I
will admit I've not looked deeply into Monads, but it seems they're about
encapsulating the execution of units of code and returning the result, and
in your example it would include any error strings as well (correct me if
I'm wrong)?

I can see why you're looking to actually generate classes on the fly
(something else you can do in VB.NET via Reflection.Emit) but with a twist
of generics and delegates you wouldn't need to.

So to summarise, I doubt you'd be able to do this effectively in VB6, but
best of luck to you.  If you need some more detailed info on achieving it in
VB.NET I'd be happy to help.

Regards,
Alex


Quote:
> Hi

> Subject line says it all! I know the question is simple, but I suspect the
> answer may not be (unless of course it is "No!").

> I've had a look at TypeLib32.dll but that seems to permit me only to read
> info about types rather than create a new one.

> If you are interested why, I am trying to understand monads and thought
> that trying to create one in vb6 may help my understanding - perhaps I've
> fallen at the first fence. This  link has a reasonably simple explanation
> http://www.reddit.com/r/programming/comments/64th1/monads_in_python_i...
> which I'd wondered about implementing

> Basically I think I need to create a function which receives an object of
> some type (could be long/int/string/ or infact any custom type) and create
> a new type which has this type as a property plus has an error

> Now I know I *may* be able to do this late bound with objects/variants,
> but I was hoping in the first instant to try and do it early.

> So, for example, if I have a long I'd be looking to create a class like

> Public Class MaybeType
> Public Value as Long
> Public ErrorObject as ErrObject
> End Class

> If I had a string, the class would be

> Public Class MaybeType
> Public Text as String
> Public ErrorObject as ErrObject
> End Class

> (Obviously I'd be using properties but, this is just to give an example)

> So if you have any ideas, pointers to sample code where this has done then
> I'd be grateful. I've had a look thru Matt Curland's book and couldn't see
> anything obvious - though there was stuff in there which I'm sure I'd need
> to use.

> Thx

> Simon



Thu, 19 Jan 2012 10:22:35 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:

>> Perhaps this is a monadic - though somehow I wonder whether the same
>> could be said for every program!

> Its still a bit greek to me....

>> What is potentially nice is the ability to load up a "programs-worth" of
>> IFunctions ready for execution.

> Forgive me for stating the obvious but, if that stuff really interests you,
> perhaps it would be better to pick up a language designed for that
> paradigm, (eg. http://www.haskell.org)

> Not so???

Probably. Trouble is that I'd have to learn a new language to learn a
new concept ... but perhaps that is the only way!

Thx for your thoughts, though.

Simon



Sat, 21 Jan 2012 13:54:22 GMT  
 Can you create Classes/Types progammatically with vb6?

Quote:
> So to summarise, I doubt you'd be able to do this effectively in VB6, but
> best of luck to you.  If you need some more detailed info on achieving it in
> VB.NET I'd be happy to help.

Okay

Thx very much, Alex.

Simon



Sat, 21 Jan 2012 13:55:27 GMT  
 Can you create Classes/Types progammatically with vb6?
Hi Simon,


One alternative you can try in VB6 is to use the VBScript runtime (scripting
control) It would all be loosely typed though, so although you could create
the types etc, I doubt there would be any real benefit over using a
dictionary.



Sat, 21 Jan 2012 21:13:03 GMT  
 
 [ 18 post ]  Go to page: [1] [2]

 Relevant Pages 

1. Using Class Builder Utility to create a base class (VB6)

2. How do I create a canned form?

3. Create hyperlink progammatically

4. Create hyperlink progammatically

5. VB6 Class modules and user defined types

6. Using a Class to create user-defined types in VBScript

7. creating an array of n objects of class type

8. Question about creating a class in VB6

9. Passing Classes to other classes (using user defined types)

10. Data Types when using Access Types in VB6

11. VB6 class module turns into regular module using VB6 IDE

12. Canned AcctReceivable Module needed!

 

 
Powered by phpBB® Forum Software