![]() |
Constructores
Hola. Saludos a todos. Soy nueva en el foro, pero creo que estoy en el sector correcto, disculpen si no. Tengo una duda con respecto a los constructores de delphi. Es necesario declararlos en cada clase? O pueden usarse los Default que heredan de Tobject?. ( O de ser necesario solo en determinados casos,¿ En cuales?).
Yo no declare constructores en ninguna clase, Solo en el programa principal. Algo de este modo.
Pero haciendo esto, no me dio acceso a los componentes ni funciones de la clase. (Estan todas declaradas como public). No tira errores, solo una advertencia de que cree un objeto de la clase, que no se uso. Si alguno puede responderme, se lo agradesco muchisimo!!! Saludos |
Hola y bienvenida a los foros.
Te recomiendo que revises nuestra Guía de estilo. Para que el código se lea bien, lo mejor es usar TAG's. En cuanto a tu pregunta, una vez creado el objeto de la clase Tclase1, deberías poder acceder a los métodos de esa clase sin problemas:
Estando metodo1 y funcion1 definidos en la clase Tclase1. |
Cita:
Podés utilizar el constructor heredado o si necesitas inicializar algo en la creación de la instancia, podes definir el constructor para tu clase. Pero siempre necesitarás crear una instancia de la clase antes de usarla. Un ejemplo muy simple, si tenemos:
Otro caso:
Para eso claro, debemos haber echo con anterioridad:
Espero no haber sido muy enrredado... Saludos. |
Muy Buena informacion sobre los constructores! y muy clara. muchas gracias :)
|
Con respecto a esa parte de la pregunta, sigo teniendo el mismo problema :(. Tengo todo bien definido en la clase. Sin constructores. y al querer usar el constructor default, me crea el objeto, pero no me deja acceder a ningun atributo ni metodo. Pido disculpas por lo del codigo, de ahora en mas usare los TAG's.
|
Cita:
No entiendo bién lo que te sucede, ¿ Te arroja algún mensaje de error ? ¿ Podrías poner (en líneas generales) el código donde declaras la clase y donde intentas usarla ? Un saludo. |
No. Ningun mensaje de error. Solo que no me deja acceder a los atributos de la vble. Ahi va el codigo :)
Esas son las declaraciones de clases y tipos. ( El constructor esta comentado ya que no estaba muy segura de como usarlo ni si era necesario). Muchas gracias :) |
Terrenal debe sere declarado como TPaqterr o, en su defecto, debes hacer un moldeo:
// Saludos |
En ves de Tobject , tipo tpaqterr, decis vos?
|
|
|
Cita:
En el caso, de que quieras o necesites definir la variable como TObject, pero luego la crees de una clase en particular, para acceder a los métodos necesitas hacer un CAST, que es lo que Román te ha mostrado en su mensaje:
También puedes usar esto:
Con eso le decimos al compilador que aunque hemos definido la variable Terrenal de tipo TObject, la queremos utilizar como tipo Tpaqterr (puesto que la hemos creado utilizando esta última clase.). |
Todo funcionando muy bien! Muchas gracias a los 4!
Ahora tengo otra duda. Utilizar un constructor nos libera de utilizar los metodos SetAtributoy GetAtributo? |
Hola.
Cita:
Saludos. |
Cita:
Un caso típico de usar el constructor, es cuando proporcionas un valor por defecto a una propiedad: Por defecto Delphi inicializará las variables de tipo integer a cero, si queremos que tenga un valor diferente, se suele hacer de esta forma y como ves, tiene poco que ver con los Get y Set. Ahora, al instanciar la clase, se inicializa a 1 la variable privada. Además eso de "liberar de usar" creo no es apropiado, en realidad siempre tienes ventajas al usar el Get y Set porque puedes hacer operaciones adicionales a la simple asignación, de eso se trata....claro. Yo Normalmente empiezo con "read Fvar write Fvar" y al final siempre termino usando, al menos, el Set. Saludos |
| La franja horaria es GMT +2. Ahora son las 18:31:04. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi