gambafeliz   21-10-2020, 12:32
#1
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.
Última modificación: 23-10-2020, 10:41 por gambafeliz.
vuott   21-10-2020, 16:26
#2
Conoces tú el concepto de "tipo de datos primitivos" y de "variable automática" ? Undecided
Última modificación: 21-10-2020, 16:40 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
gambafeliz   21-10-2020, 17:34
#3
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.
jsbsan   21-10-2020, 19:12
#4
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/
vuott   21-10-2020, 19:44
#5
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 ?
Última modificación: 21-10-2020, 19:54 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
gambafeliz   21-10-2020, 21:38
#6
(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.
  
Usuarios navegando en este tema: 4 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.