Esto que voy a desarrollar igual es una soberana estupidez pero bueno. Es una idea que lleva un tiempo rodándome la cabeza.
Vamos a crear una base de datos. Es sólo un ejemplo que creo que es ideal porque es muy común y es fácil de entender e imaginar. Esta se va a componer de contactos ( xej Paco, Jose, etc). Cada contacto tendra unos datos ( telefono, direccion,tc). A la vez esos datos los podremos meter en grupos ( trabajo, familia,amigos,etc).
Para TODO sólo usaremos una variable o array, y esta es la novedad. Poder usar una sola variable para meter una base de datos con 3 dimensiones.
La variable será %Var.
Creamos un contacto, entonces usamos array push. En esta accion usaremos una variable que no formará parte de la base será %Indice. Entonces tendremos a Jose, Paco,etc, en % Indice 1,2,3,etc.
Para introducir el contacto en la base haremos esto:
Set %posición a %Indice(#<)*10 (marcado calcular)
Array Push: Posición: %posición
Valor: %Indice1
De esta manera con #< cogemos el último valor del array o sea la posición del contacto que acabamos de crear, porque siempre se pondrá en última posición. Y al multiplicarlo por 10 todos los contactos se guardaran de diez en diez. Asi:
%Indice1----%Var10----- Jose
%Indice2----%Var20------Paco
....etc.
Luego los datos lo podemos guardar en %Var11,12,13 si es para Jose si es para el contacto 2 en %Var21,22,23. Eso si sólo podemos meter nueve datos( del 11 al 19 xej), si no se confundiría el dato con el siguiente contacto. Con otra variable %Indicedatos: por ejemplo calle seria %Indicedatos1, telefono el %Indicedatos2, y asi.
Si mas tarde le quiero meter a Paco(contacto 2) un telefono:
Presento los contactos en un menu de escena ( fuente array variable %Indice). Al darle a uno con %select_indices se que numero de contacto es. Meto en una variable el telefono y esta variable la igualo a %valor variable que he calculado en otra tarea de esta manera: %select_indices*10+%tipodedatoququeremosmeter. ( evidentemente tanto select como tipodedato... les habremos dado un valor previamente y utilizaremos en esa formula otras variables, lo pongo asi por un tema de claridad).
A todo esto le pondremos una tarea para que solo se puedan guardar hasta 99 contactos de manera que el último sea el %Var990. Esto es para que no se confunda con lo que vamos a hacer ahora que es meter la tercera dimensión, los grupos.
Para hacer un grupo los creo de mil en mil. Asi el primero sería %Var1000. Si le quiero meter el contacto 2, Paco, tengo que coger los elementos del array del 20 al 29, y meterlos en %Var1020 a %Var1029.
El grupo 2 seria %Var2000, el 3 %Var3000, etc. Hasta el nueve que sería %Var9000.
Cuando tenga más tiempo desarrollaré un poco más la idea pero creo que es plenamente viable. Otra cosa es que sea útil, El problema es que hace muchos años manejaba Basic (el del Spectrum 48k) y ya no me acuerdo como funcionaba una verdadera matriz, de manera que no se si esto lo puede sustituir de alguna manera.
A ver que me decis los que manejais más otros lenguajes de programación.
Si es una gilipollez lo que he escrito os pido perdón por haberos hecho perder el tiempo.