punteros o array dinámico
Hola!
estoy haciendo una pequeña aplicación que lee datos de tipo record de unos ficheros y luego tiene que interactuar con estos datos. Mi duda es: ¿es mejor que cargue estos datos en un array dinámico o uso punteros? ¿Qué os sugiere vuestra experiencia? Muchas gracias! Un saludo, Jon |
Te recomiendo que uses las clases TList o TObjectList. Los punteros son liosos si no sabes perfectamente cómo funcionan, y aun así tienes que andarte con mil ojos para no meter la pata. Las listas dinámicas no ofrecen la flexibilidad de una clase ni por asomo. No es que TList ni TObjectList sean la panacea, pero funcionan muy bien, oyes.
Busca información sobre las dos clases que te recomiendo, que creo que por aquí las hemos comentado. |
También puedes utilizar un array dinámico, pero al igual que Ñuño, te desaconsejo los punteros, por lo lioso.
|
gracias a ambos!
yo he solido usar los punteros con frecuencia, pero a pesar de ello, creo que son un lío :D. Leeré sobre TList, y si no convence, array dinámico y a correr! Muchas gracias monstruos! Un saludo, jon |
Un pequeño apunte:
Si sólo vas a añadir elementos a la lista y sólo vas a destruirlos al final todos "a la vez", entonces con un array dinámico tienes de sobra. TList y TObjectList están diseñados más bien para cuando vas a estar añadiendo, quitando, moviendo, limpiando, ordenando, etc. |
Gracias Ñuño!
efectivamente, van a ser "destruidos todos a la vez". Probaré con el array dinámico. Muchas gracias, Un saludo, jon |
problemita para extraer un objeto de una lista
he hecho una clase que permite administrar un array de Tobject utilizando punteros(similar a TobjectList). Mi idea era hacer un array dinámico que me permitiese almacenar objetos del mismo tipo, por ejemplo, una lista de botones, o una lista de labels, etc. Hasta ahí va bien el asunto, pero me he trabado en lo siguiente: supongamos que ya tengo generada la lista de botones, pero cuando quiero extraer o leer un item de la lista, que es un objecto de la clase(tobject) y almacenarlo en un objeto de la clase Tbutton, me lanza un error y dice que son tipos incompatibles.
Es decir, me permite almacenar una instancia de la clase Tbutton en una variable de tipo Tobject pero no me permite lo opuesto. Espero q se haya entendido , saludos. |
Hola rojo raton y bienvenido a los foros de Club Delphi. :)
Siempre conviene abrir un nuevo hilo para tu consulta ya que incrementa las posibilidades de obtener respuestas. También ayuda mucho agregar las declaraciónes y la parte del código que está generando el problema. (Demás está decir que exponer exáctamente el mensaje de error que estás recibiendo, es una de las mejores orientaciones a quién está leyendo tu mensaje) Según entiendo de tu consulta, tenés declarado un array de TObject (llamémosle ObjArray), en el que has almacenado algunos TButtons y el problema se te presenta cuando queres trabajar con alguna propiedad de ObjArray[n] como si del TButton almacenado se tratara. Si no te comprendí mál, creo que tendrías que moldear el elemento ObjArray[n] al tipo con el cuál querés trabajar. Es decir y simplificando mucho: Otro ejemplo:
Por último, como siempre aconsejamos a los recién llegados, te invito a que leas la Guía de estilo, un conjunto de sugerencias para que todos podamos entendernos mejor. Un saludo. |
Has entendido mi problema!!! y tu respuesta es correcta. Eternamente agradecido, no sabia de que forma moldear una instancia de Tobject a un objeto en particular.
Si, me olvidé de leer la guia de estilo :( ahora le echo un mirada. Gracias ecfisa!!. un abrazo. |
Hola.
Otra forma de "moldear" que me gusta más es usar "AS": Es exactamente lo mismo, pero a mi me gusta más. De la otra forma parece que estás llamando a una función. Pero esto ya son gustos personales. |
Si, pareciera que estás llamando a una función pero me doy cuenta que en realidad es algo así como "mirar" una instancia de Tobject como si fuese un objeto Tbutton. Bueno ambas maneras de hacerlo funcionan de maravilla.
|
La franja horaria es GMT +2. Ahora son las 10:47:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi