![]() |
Problema con Clase
Hola a todos, como están. Estoy incursionando con los objetos, pero necesito de vuestra ayuda nuevamente.
Me he creado una clase pequeña, la cual una de sus Propiedades es del tipo record. El punto es que cuando trato de asignar un valor a la Porpiedad de la clase, el compilador me arroja el mensaje "Left side cannot be assigned to". La clase es como siguie:
Cuando trato de hacer lo siguiente: <LaClase>.Grafico.Tipo := 1; <--- "Left side cannot ........" Espero me puedan ayudar, please..... De ante mano, muchas gracias.... |
Hola,
El error que comentas se da cuando tratas de asignar un valor a una variable que únicamente puede leerse, no escribirse. En todo caso, haciendo alguna prueba con el código que has expuesto, y, limitándonos a lo que nos ocupa, no he podido reproducir el error que dices:
|
Gracias por tu pronta respuesta Dec.....pero estas asignando la Propiedad FGrafico.Tipo que está definida en la misma unidad. Si cambias FGrafico por Grafico.Tipo te dará el mismo error que me ocurre a mi. Mi clase está definida en una unit aparte, por lo tanto cuando necesito ocuparla la llamo desde las unit que la requieren.
|
Será que el tipo de datos TTipoGrafico debiera ser Class en vez de Record, y definir el Read y Write para cada property (Tipo, Trazo y ColorSerie)..??????? De esa forma sí podré asignarle valor a la propiedad Grafico.Tipo???????
Ejmp:
Agradezco todas las ayudas que me puedan brindar.......... |
Hola,
Tienes razón, no he caído en lo que dices. Y de hecho pude hacerlo porque al estar la clase en la misma unidad que en la que la utilizaba, Delphi me ha permitido acceder a "FGrafico", siendo como es una variable privada de la clase. :o |
Hola,
Yendo al tema que nos ocupa, y aunque estoy muy espeso (y no sé si se me entenderá) diré que no parece ser posible asignar la variable del "record" que nos ocupa tal como lo quieres hacer. Claro, mira tú, ¡si fuera posible no estaríamos aquí hablando de ello! Si es que... cuando digo que estoy espeso... Lo siguiente sí que es posible:
Pero, claro, tú lo que quieres dar un valor a un elemento en concreto del "record" "TTipoGrafico", y no tener que dar valor a todas las variables. Está bien. Entonces esta línea de tu código tiene conlleva una contradicción, causa el problema, o yo estoy equivocado:
¿Ahí no se está diciendo, "la propiedad Grafico es de tipo "TTipoGrafico" y para leerla puede accederse a la variable privada "FGrafico", y para escribirla ha de escribirse la variable "FGrafico"...? Es decir, "para escribirla hay que escribir la variable "FGrafico", de tipo "TTipoGrafico". No sé exactamente porqué, pero, por lo que se ve no puedes acceder a los elementos de la variable "FGrafico" por separado. O eso, o alguien que sepa más nos lo explica. ;) ¿Y entonces? ¿Qué pasa si quieres dar la posibilidad de cambiar el valor de un elemento de la variable "FGrafico"? Pues a mí a bote pronto se me ocurre algo que añado al código que puse anteriormente:
|
Dec, yá solucioné mi problema....Los tipos de datos Record los dejé como Class, en donde cada property tiene su Read y Write. Ahora sí puedo asignar Grafico.Tipo directamente........
Por lo tanto en el constructor de la clase TPGSeries hago el create de la clase TTipoGrafico. No sé si la forma en que lo he hecho es lo correcto, pero por el momento soluciona mi problema. Ya tendré más tiempo para aprender la mejor forma de definir y utilizar las Clases y Objetos...... Muchísimas gracias por la ayuda..... |
¡Hola a todos!
A primera vista se ve extraño este comportamiento del compilador, pero quizá, si lo analizamos con mayor detalle, podríamos encontrar su causa (jusificada o accidental). En la primera oportunidad haré algunas pruebas de esto. Un abrazo extraño. Al González. :) |
La franja horaria es GMT +2. Ahora son las 07:08:21. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi