FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Pasar valores entre variables tipo record
Hola amigos, voy a plantearos algo que me ha dejado perplejo.
Tengo un programa de quinielas hecho hace varios años en Delphi7. Ahora estoy modificando algunas cosas con motivo del nuevo pleno al 15. Guardo en un fichero los datos de cada jornada, en una variable tipo record. Voy leyendo los registros, según la jornada que voy a trabajar. Cuando tengo que modificar algún dato, utilizo algunas variables intermedias, para comparar si ha habido algún cambio. Dado que las variables las tengo declaradas con comas, cuando interesa utilizo la asignación: Paso los valores de la variable2 a un formulario de modificaciones. Hago las modificaciónes en la variable2 y luego las paso a la variable1, si inateresa. Esto lleva años funcionando correctamente. EL PROBLEMA Ahora he añadido algunas variables más en el record. SORPRESA Cuando intento rellenar el formulario con los datos de la variable2 en el evento OnShow, una parte de ellos no se rellenan. Al comparar las dos variables, me dice que los valores son distintos, por lo que he llegado a la conclusión de que no traspasa bien los valores de una a la otra. La asignación las variables está en el evento OnShow. De manera que si salgo del formulario de modificación varias veces y vuelvo a entrar, va asignando los valores poco a poco, hasta asignarlos todos. (¡¿?!) Esto me tiene perplejo...... Más aún cuando he comprobado los valores que no traspasa, antes de ponerlos en los distintos Edit del formulario, y he comprobado que no están. Pero ahí no queda la cosa, he utilizado otra variable asignada en el form de lectura de fichero y ¡Sí ESTÁN LOS VALORES COMPLETOS! Bien, me dije, pues voy a asignar los valores al leer el registro, a ver qué pasa. PUES TAMPOCO. Bueno, me dije, será el nombre: PUES TAMPOCO Bueno, me dije, el orden de declaración (una chorrada) PUES TAMPOCO Llevo 3 días revisando el código y no consigo ver el motivo de esto. Por favor, si alguien ha tenido esta experiencia o si puede aportarme alguna idea, (estoy abierto a probar cualquier cosa), se lo agradeceré infinitamente. Gracias por aguantar el rollo, pero no sabía explicarlo de otro modo. |
#2
|
||||
|
||||
Según entendí, cuando asignas una variable Record a otra variable Record, del mismo tipo, no todos sus campos se copian. ¿Es correcto?
¿Podrías mostrar la declaración de ese Record y el código donde haces las asignaciones? Por favor. |
#3
|
|||
|
|||
Gracias, Al González, por tu interés.
SI. has entendido correctamente. ESO ES LO ME TENÍA LOCO. Porque habia llegado a esa conclusión ERRÓNEA. Acabo de resolverlo, pero NO ENTENDERLO. Veamos: En el evento OnExit de cada Edit, tenía puesto, lógicamente, (para ahorrar traspasos entre los distintos Edit y las variables del Record), la asignación del valor del Edit al Record. Este evento se ejecutaba también, por supuesto, al asignar los primeros valores del Record a los distintos Edit. Evitando la ejecución del evento OnExit, mediante una boleana global, he conseguido que los valores se transfieran correctamente. Ahora viene mi "DESCOLOQUE MENTAL" ¿Por qué ha estado funcionando más de 7 años, con algunas corrrecciones y compilado con Delphi7, (como ahora) con el mismo evento OnExit? Supongo que para comprender éso hay que ser MUY EXPERTO, yo no. A pesar de todo, y visto lo visto, me queda un pequeño "come... come..." por dentro, que me genera una cierta inseguridad sobre si he resuelto correctamente el problema, y no va a resultar por otro lado. Bueno no me extiendo. Gracias, de nuevo, Al por tu interés. Si el problema sale por otro lado, ya te contaré. Saludos. |
#4
|
||||
|
||||
Cita:
Cuando gustes podrías mostrar algo de ese código y con gusto aquí habrá muchas manos dispuestas a ayudar en la investigación. Sólo tienes que hacernos saber con exactitud qué records son esos, cómo y dónde los asignas y qué versión de Delphi usas ahora. Código y claridad, si no fuera molestia. |
#5
|
|||
|
|||
Gracias Al.
Hasta ahora no me ha dado ningún problema, después de los cambios. El record es el siguiente.
La declaración de variables es esta:
y el evento OnExit ha quedado así después de los cambios:
La variable "EsUnaAsignacionMia" la pongo a True antes de asignar los valores a los distintos Edit. Y la cambio a False después de asignar los valores. Sigo sin entender por qué ha estado funcionando tantos años, si lo he compilado con la misma versión de Delphi, o sea con la versión Delphi7, que todavía conservo instalada en un ordenador más antiguo, para no complicarme la vida si tengo que hacer alguna modificación en algun programa viejo. Gracias por tus elogios, pero es cierto que soy muy meticuloso, pero sólo soy aficionado y tengo muchiiiiiisimo que aprender. Un Saludo. Última edición por Casimiro Notevi fecha: 29-08-2014 a las 19:31:46. |
#6
|
|||
|
|||
Bueno, no entiendo por qué ha salido una imagen que yo no he puesto conscientemente en la declaración de varibles. Vuelvo a copiarlo:
Última edición por Casimiro Notevi fecha: 29-08-2014 a las 19:32:23. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Pasar variables entre BPL y aplicacion | adeszeus | OOP | 3 | 05-07-2011 00:46:25 |
Pasar variables entre programas | Belaix | Varios | 5 | 24-11-2008 08:06:31 |
pasar un tipo de datos (array of record) entre aplicaciones | mauqu | Varios | 4 | 26-10-2007 21:04:31 |
pasar valores de variables de un form a otro | oscarpinog | Varios | 7 | 12-08-2007 04:18:39 |
|