[RESUELTO] Redim modifica las variables

Discute sobre la aplicación de hojas de cálculo

[RESUELTO] Redim modifica las variables

Notapor novicio » Lun May 14, 2018 6:53 pm

Me he dado cuenta de que en LibreOffice, programando macros, la instrucción Redim modifica el valor de la variable que se está usando para redimensionar. Adjunto un trozo de código de un programa que estoy haciendo:
...
n = Hoja.getCellByPosition(1,0).Value
MsgBox "n=" & n

Redim A(n,n)
Redim Ifil(n)
Redim Icol(n)


' Introducir datos de la matriz en hoja
MsgBox "Rellenar matriz a partir de B2 y aceptar"
MsgBox "n=" & n
...

Pues bien en este código, al no funcionar el programa inserté las dos instrucciones MsgBox para controlar el valor de n. Y resulta que el valor es distinto antes y después de Redim.
Por ejemplo si al principio es n=3, después de Redim me da n=7. Si borro una de las dos instrucciones sobre Ifil o Icol me da respectivamente antes y después 3/6. Si borro las dos 3/5. Si borro la referida a A me da 3/5. Si borro todas n se mantiene 3/3.
Parece que cada vez que n interviene en un redimensionamiento aumenta +1. Y esto sucede tanto si n es local a la subrutina como si la declaro Global fuera de la misma.
Esto es bastante chungo porque uso posteriormente n en el programa, y claro me descontrola todo porque interviene en varios bucles.
¿Le ha pasado a alguien? ¿Tiene solución? Se me ocurre recargar n después de cada Redim, pero claro es bastante chapucero. Además no sé si al dimensionar la matriz A me la dimensiona n x n o n x n+1 porque no sé si al redimensionar A también aumenta una unidad entre una y otra dimensión.
¿Alguna idea o consejo?
Última edición por mauricio el Mar May 15, 2018 2:55 pm, editado 2 veces en total
Razón: Marcar icono de resuelto
LibreOffice Versi??n: 5.4.6.2 (x64)
Windows 8.1
novicio
 
Mensajes: 4
Registrado: Lun May 14, 2018 6:29 pm

Re: LibreOffice-Macros: Redim modifica las variables de dime

Notapor mauricio » Lun May 14, 2018 10:20 pm

No puedo reproducir el error, en el siguiente código, n sigue valiendo 10 despues del Redim
Código: Seleccionar todo   Expandir vistaContraer vista
Dim n As Integer
Dim m(5)

   n = 10
   MsgBox n
   MsgBox UBound(m)
      
   ReDim m(n)
   MsgBox n
   MsgBox UBound(m)   

Asegurate de no estar modificando el valor de n en algún otro proceso, de todos modos es mala idea usar los mismos nombres de variables para cosas diferentes.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5636
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: LibreOffice-Macros: Redim modifica las variables de dime

Notapor novicio » Mar May 15, 2018 7:06 am

La verdad no lo entiendo. Efectivamente tu código funciona bien. Pero no sólo eso sino que el código que ayer no me funcionaba, hoy sí funciona correctamente. Ahora que lo recuerdo, ayer mientras trabajaba hubo un momento en que se atascó el ordenador y salió momentaneamente en el título de la pestaña el "Libreoffice (no responde)" pero se repuso y siguió funcionando. Igual fue eso. El caso es que hoy el código si fuciona correctamente y n no varía después de Redim. En fin, misterios de la informática.
NOTA: no es que use n para varias cosas, n es el orden de una matriz; es un programa para invertir matrices -por el método de Gauss-Jordan- y hay que extender varios bucles sobre filas y columnas (n). Por lo demás el programa ya funciona.
Gracias por tu interés.
Un saludo.
LibreOffice Versi??n: 5.4.6.2 (x64)
Windows 8.1
novicio
 
Mensajes: 4
Registrado: Lun May 14, 2018 6:29 pm

Re: [RESUELTO] Redim modifica las variables

Notapor mauricio » Mar May 15, 2018 2:59 pm

En mi experiencia, reitero lo de "mi experiencia", todas, todas las implementaciones de Basic son algo "incompletas", por decirlo de alguna manera...

Usa Python.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5636
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 20 invitados