el 07-10-2011 01:01 PM
Hola a todos,
tengo una variable global de tipo string, y me gustaría que cada vez que entra en ejecución un determinado subVI este string se vaciara, ya que sino, cada vez que se ejecuta, añade los nuevos valores siguiendo los antiguos, y yo quiero que los "machaque".
He probado a utilizar el Invoke node, para reinicializar variables al valor por defecto, pero no sé porqué el programa muere cada vez que lo ejecuto. ¿alguno conoce forma alguna de "vaciar" el string, de borrar todo su contenido?
Gracias.
el 07-11-2011 09:07 AM
Que tal Pigwedeon,
Yo te recomendaría que al final de que ese VI se ejecuta, guardes en la variable una constante de string vacia. Sin necesidad del Invoke node. Simplemente cableale una constante de string vacia.
Intetna esto y si no funciona, estoy a tus ordenes!!
Saludos,
el 07-11-2011 11:37 AM
Hola Ifelilas, gracias por tu respuesta.
Eso es lo primero que pensé, meterle un string vacío. El problema es que si lo pongo al final de ese subVI, se carga el valor que había obtenido. Necesito que lo borre antes de comentar el subVI y obtener el nuevo valor. Por eso he colocado eso mismo (string vacío a la variable) al principio del subVI, pero no funciona. En cambio si lo pongo al final, sí que funciona, pero claro, como te he comentado no me sirve ya que entonces borra el valor que ha obtenido...
Es muy extraño lo que sucede...
el 07-11-2011 11:47 AM
La verdad no entiendo bien que es lo que está pasando, pero si me pasas los VIs a lo mejor me pueda dar una mejor idea, por que no los subes!
el 07-11-2011 11:48 AM
En el programa principal he colocado un control de esta variable, para ver qué guarda en cada momento. Al arrancar está vacía, cuando ejecuto el subVI una vez, me obtiene el primer dato (supongamos +100), cuando vuelvo a llamar al mismo subVI, inmediatamente la variable se vacia, pero tras finalizar el subVI, entonces aparece +100+100...
Por lo que intuyo que hay algo en ese subVI que guarda el último valor, y por más que rinicialice la variable global, al final siempre acaba añadiendo los valores anteriores. ¿Hay algún método para limpiar toda la memoria de ese subVI?
el 07-11-2011 12:12 PM
Mira, esto que me comentas puede ser principalmente por dos razones, la primera es que estes usando una variable funcional global y estas guardando varios datos, que dudo que sea el caso.
La segunda, puede ser que lo que estas guardando en tu variable global al leerlo lo estas concatenando, o lo que le escribes estas concatenando lo que le estas escribiendo.
Es decir, si yo tengo un 10 en mi Variable Global, y lo despliego en otro VI y después tengo un 8 y lo despliego, el problema es que el 10 se quedó en memoria y al desplegar el 8 despliego el 10 y el 8.
Debe ser por ahí algo que se nos esta llendo en la programación, pero no estoy seguro, necesitaria ver el VI.
Te recomendaría poner un probe en tu variable a ver que te está mandando.
Saludos,
el 07-11-2011 12:18 PM
Parece ser que es lo segundo que comentas, de ahí que necesitara limpiar memoria.
Te he adjuntado los .vi en cuestión, el primero es el programa principal, el segundo, es el que se ejecuta cuando le das al botón de "cargar". Que lo que hace es buscar una trama de datos de un Excel que cargas previamente y le indicas la fecha y hora de la trama de datos con la que quieres trabajar. En el control de "basedatos" es la variable global en cuestión, la problemática...
el 07-12-2011 09:14 AM
Hola luis, gracias por la ayuda que me estas ofreciendo.
¿has conseguido averiguar algo mirando los VIs?
el 07-12-2011 09:16 AM
Que tal,
Ya los descargue pero no he tenido tiempo de checarlos aun, en cuanto tenga un momento los reviso y te comento.
el 07-18-2011 10:42 AM
Hola Luis,
además de preguntarte si habías averiguado algo sobre mi duda, quería aprovechar para preguntar si sabes cómo ajustar la ventana del panel frontal para que se abra siempre a determinado tamaño. En mi caso quiero ajustarlo al marco de los controles.
Gracias.