Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Iniciar una Collection vacia pero que no sea Null
#1

Explico cual es mi problema.

Si hago:

Dim cDatos As Collection

y luego cDatos.Add(valorX, "keyX")

me da un error de que la colección es un objeto null

Si intento Dim cDatos As Collection = [] para que sea colección vacía, pero no null, me dice que los tipos de datos no son adecuados.

Solución chapuza: Dim cDatos As Collection = ["." : ","]
cDatos.Clear

y ya me dejad hacer cDatos.Add(valorX, "keyX")
    ¡Gracias!
#2

bienvenido al foro, en Gb todo lo que sea algun tipo de conjunto de datos necesita "New"
Dim cDato as New Collection

las variables simples no lo necesitan:

Dim iEntero as Integer = 3

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
[-] Los siguientes 1 usuarios dice gracias a tercoide por este post:
  • gartumar2
    ¡Gracias!
#3

(04-11-2022, 16:02)tercoide escribió:  las variables simples no lo necesitan

Solo añado que la palabra clave "New" no es necesaria si un tipo de Objeto es devuelto, por ejemplo, por una Función:
GAMBAS
  1. Dim variable As [tipo de Objeto]
  2.  
  3. variable = Una_Funcion(bla...bla...)


Esto se debe a que el Objeto ciertamente fue creado por la Función, invocada, dentro de su bloque de instrucciones.

"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • gartumar2
    ¡Gracias!
#4

(04-11-2022, 15:21)gartumar2 escribió:  me da un error de que la colección es un objeto null

Como dice TercoIDE hay que usar New a menos que, como lo que dijo Vuott, sea el producto de una función. Luego, en vez de usar el método .Add puedes asignar valores de la siguiente manera:
GAMBAS
  1.  
  2. cArray["tag1"]= "value"


Esta forma e útil porque puedes, ademas de agregar un valor, cambiar el existente para una clave, en este caso "tag1".

Nota: Para todos los casos de valores asignados a una clave de la colección es 0 (cero), Null o una cadena vacía el elemento sera eliminado de la colección. si quieres una lista que mantenga los calores vacíos o nulos debes usar un JSONCollection con el 2º parámetro True

1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • gartumar2
    ¡Gracias!
#5

gartumar2

¿ Por casualidad estudiaste Python ?. En caso afirmativo, ¿ lo relacionaste con el tipo "None" ?.

None en Python es la forma de decirle a una variable, objeto, que no es nula, que no tiene valor, pero en realidad vale "algo". ( nada ).  Smile
( Esto tiene su idea).

En Gambas no existe este tipo de datos. Ausencia de valor, pero ni es nulo ni es por defecto.
Ejemplo al declarar una variable en Gambas por defecto. Si tu declaras una variable del tipo entero,
su valor por defecto sera cero.

Imagina que estas creando un objeto de la clase empleado, pero no asignas valores al constructor.

Constructor(nombre como cadena, edad como entero)

Y haces esto:

Constructor()
'Cuerpo del constructor:
nombre = None
edad = None

Y luego más tarde asignas valores a sus propiedades.

Ejemplo en Python:

Python
  1. class Ficha_Empleado:
  2.     
  3.     def __init__(self):
  4.         self.nombre = None
  5.         self.edad = None
  6.     
  7.  
  8. def main():
  9.     a = Ficha_Empleado()
  10.     a.nombre = "Javier"
  11.     a.edad = 21



Saludos

"El buen perfume en frasco pequeño se vende"
[-] Los siguientes 1 usuarios dice gracias a Shell por este post:
  • gartumar2
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)