tiempo producido pila insuficiente inesperado espacio error ejecución vb6 runtime

vb6 - producido - espacio de pila insuficiente excel



Recuperación del tipo de tiempo de ejecución VB6 (4)

Creo que lo que estás buscando es TypeName en lugar de TypeOf.

If TypeName(foobar) = "CommandButton" Then DoSomething End If

Editar: ¿Qué quieres decir con objetos dinámicos? ¿Te refieres a objetos creados con CreateObject (""), porque eso debería funcionar?

Editar:

Private Sub Command1_Click() Dim oObject As Object Set oObject = CreateObject("Scripting.FileSystemObject") Debug.Print "Object Type: " & TypeName(oObject) End Sub

Salidas

Object Type: FileSystemObject

¿Cómo se puede obtener el Tipo (el nombre como una cadena es suficiente) de un Objeto en VB6 en tiempo de ejecución?

es decir algo como:

If Typeof(foobar) = "CommandButton" Then ...

/ EDITAR: para aclarar, necesito verificar los objetos de tipo dinámico. Un ejemplo:

Dim y As Object Set y = CreateObject("SomeType") Debug.Print( <The type name of> y)

Donde la salida sería "CommandButton"


Esto debería resultar difícil, ya que en VB6 todos los objetos son cosas COM ( IDispatch ). Por lo tanto, son solo una interfaz.

TypeOf(object) is class probablemente solo hace una llamada COM get_interface (olvidé el nombre exacto del método, lo siento).


No tengo una copia de VB6 a mano, pero creo que necesita la

Typename()

función ... Puedo verlo en Excel VBA, por lo que es probable que esté en el mismo tiempo de ejecución. Curiosamente, la ayuda parece sugerir que no debería funcionar para un tipo definido por el usuario, pero esa es la única forma en que alguna vez lo uso.

Extracto del archivo de ayuda:

Tipo Nombre Función

Devuelve una cadena que proporciona información sobre una variable.

Sintaxis

TypeName (varname)

El argumento varname requerido es una Variante que contiene cualquier variable, excepto una variable de un tipo definido por el usuario.


TypeName es lo que quieres ... Aquí hay un ejemplo de salida:

Código VB6:

Private Sub cmdCommand1_Click() Dim a As Variant Dim b As Variant Dim c As Object Dim d As Object Dim e As Boolean a = "" b = 3 Set c = Me.cmdCommand1 Set d = CreateObject("Project1.Class1") e = False Debug.Print TypeName(a) Debug.Print TypeName(b) Debug.Print TypeName(c) Debug.Print TypeName(d) Debug.Print TypeName(e) End Sub

Resultados:

String Integer CommandButton Class1 Boolean