Comunidad Gambas-es
[SOLUCIONADO] Perdido en conceptos de tipos, parámetros a function o Sub - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: [SOLUCIONADO] Perdido en conceptos de tipos, parámetros a function o Sub (/thread-153.html)



Perdido en conceptos de tipos, parámetros a function o Sub - gambafeliz - 21-10-2020

Hola

Pretendo hacer lo siguiente:

Tengo una collection donde pongo esto: Public cTipo As Collection = ["REAL": gb.Float, "INTEGER": gb.Integer]

Y pretendo pasar un elemento de la collection a una función para después usarlo como tipo, ¿como lo hago? (nota: lo detallo para explicarlo más claramente)

Tengo:

Public cTipo As Collection = ["REAL": gb.Float, "INTEGER": gb.Integer]

dim str as string = validar(cTipo[1])

Function validar(tipo as ¿que pongo aquí?) as variant

' para hacer algo como
Dim variable as tipo

Como veis estoy muy liado, me guían.

Gracias.

=======Solución================================
Ya he dado con la solución, es estudiando muy bien Object (Este tipo de dato representa una referencia anónima a un objeto Gambas.)

Combinando Type() y .Name puedes manejar cualquier Objeto de Gambas y mediante Variant puedes manejar cualquier tipo primitivo junto a Select Case por último tan solo tenemos que aprovechar los manejadores de Errores de serie de Gambas como Catch

No lo explico con más profundidad por que es muy amplio y diverso.


RE: Perdido en conceptos de tipos, parámetros a function o Sub - vuott - 21-10-2020

Conoces tú el concepto de "tipo de datos primitivos" y de "variable automática" ? Undecided


RE: Perdido en conceptos de tipos, parámetros a function o Sub - gambafeliz - 21-10-2020

Gracias vuott

No te lo tomes a mal lo que te voy a escribir. Sabes que te lo digo con respeto y siempre con admiración.

Mira lo que quiero hacer es algo raro, y no siempre tengo la mente fina, la mayoría de las veces la tengo como una pecera. vale Smile

Pretendo detectar un tipo de SQLite y convertirlo a Gambas para después automatizar algo. Te lo digo más claro. Lo que insinúo en el cuerpo del hilo, lo ves posible, sabes ayudarme o es tal chorrada que no solo no me puedes ayudar sino que te parece que debo revisar todo lo que se de Gambas y demás lenguajes.

Y que sepa que ya veo muchos errores en lo que pido pero pretendo averiguar si es posible de otro modo, con vuestros sabios concejos y yo mismo.

Gracias y por favor no se me enfade si soy muy directo en las conversaciones. Seguro que prefieres personas directas a que te den la puñalada por detrás Smile

Ahhh, primitiva si pero no automática. Mejor lo busco.


RE: Perdido en conceptos de tipos, parámetros a function o Sub - jsbsan - 21-10-2020

Gambafeliz:

"Function validar(tipo as ¿que pongo aquí?) as variant"

Puedes poner variant (asi lo admite todo tipo), y luego ya dentro del  codigo de la funcion, comprobar que tipo es typeof
http://gambaswiki.org/wiki/lang/typeof
y alli con un select case puedes hacer según el tipo que haga lo que sea...

Public function validar(tipo as variant)
dim valor as integer

valor=typeoff(tipo)

select case valor
case gb.date
.....'validad si es una fecha correcta
case gb.string
....'validad si es una cadena correcta
etc..





"Pretendo detectar un tipo de SQLite y convertirlo a Gambas para después automatizar algo."
Yo hice un generador de cogido, que leia una base de datos SQLITE, y generaba el codigo para manipularla. Este mismo codigo generado lo usaba en otro programa para trabajar con la bse de datos (no directamente en el generador de codigo).: mapbd

http://mapbdvistas.blogspot.com/


RE: Perdido en conceptos de tipos, parámetros a function o Sub - vuott - 21-10-2020

Como las Constantes gb.Float, gb.Integer, presentes en la Collection, son valores enteros, yo pasaría estas Constantes, y en la función comprobaría su tipo de pertenencia.

...una pregunta:  la función "validar" al final exactamente QUE tiene que volver ?


RE: Perdido en conceptos de tipos, parámetros a function o Sub - gambafeliz - 21-10-2020

(21-10-2020, 19:12)jsbsan escribió: "Pretendo detectar un tipo de SQLite y convertirlo a Gambas para después automatizar algo."
Yo hice un generador de cogido, que leia una base de datos SQLITE, y generaba el codigo para manipularla. Este mismo codigo generado lo usaba en otro programa para trabajar con la bse de datos (no directamente en el generador de codigo).: mapbd

http://mapbdvistas.blogspot.com/

Mil gracias jsbsan. Oye esto es enserio. Gracias a que he visto parte de código de un programa tuyo, quiero que sepas que me ha sido de inspiración para evolucionar mucho mi código. Gracias por servirme de inspiración.

(21-10-2020, 19:44)vuott escribió: Como las Constantes gb.Float, gb.Integer, presentes en la Collection, son valores enteros, yo pasaría estas Constantes, y en la función comprobaría su tipo de pertenencia.

...una pregunta:  la función "validar" al final exactamente QUE tiene que volver ?

validar: Lo que va hacer es que dependiendo del tipo de campo de la tabla de la base de datos, pretendo validar tanto su caja de texto como el botón para grabar en la tabla. Esto es lo que analiza de forma autónoma la función validar y a su vez me devuelve texto o valores para avisar o cargar la caja de texto.

Gracias a ambos. Voy a probar vuestras propuestas de código para ver si encuentro una lógica que me inspire para este caso.

vuott que sepas que no me has explicado las variables automáticas, estaría bien que me des un enlace para ver si al final conozco el concepto.

=============================

Lo que pretendo hacer con este proyecto es aprender, y lo acabo de hacer. No se si lo veis interesante lo que os voy a contar. Lo que he hecho es crear una tabla SQLite y tan solo con eso como si de un ser vivo se tratara, mi proyecto se le dice dos cosas, la base de datos y la tabla y crea un proyecto que etiqueta y valida el proyecto así como la entrada de datos a la tabla de forma automática sin programación (que quiero decir) que pongas la tabla que pongas el programa se adapta y valida cada campo en el formulario con tanta perfección que el usuario no le puede colar ningún error. Ya lo he hecho pero estoy simplificando el código ahora.