Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2010
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 13-05-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 13-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
También puedes utilizar un array dinámico, pero al igual que Ñuño, te desaconsejo los punteros, por lo lioso.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 13-05-2010 a las 18:20:18.
Responder Con Cita
  #4  
Antiguo 13-05-2010
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias a ambos!
yo he solido usar los punteros con frecuencia, pero a pesar de ello, creo que son un lío . Leeré sobre TList, y si no convence, array dinámico y a correr!

Muchas gracias monstruos!

Un saludo,
jon
Responder Con Cita
  #5  
Antiguo 13-05-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 17-05-2010
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
Gracias Ñuño!
efectivamente, van a ser "destruidos todos a la vez". Probaré con el array dinámico.

Muchas gracias,

Un saludo,
jon
Responder Con Cita
  #7  
Antiguo 03-10-2011
rojo raton rojo raton is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 16
Poder: 0
rojo raton Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 03-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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:
Código Delphi [-]
...
var
  ObjArray: array of TObject;
// Se supone los TButtons ya cargados.

...
var
  s: string;
begin
  s:= TButton(ObjArray[n]).Caption;
  TButton(ObjArray[n]).Caption:= 'Nuevo Caption';
  ...
Otro ejemplo:
Código Delphi [-]
var
  bt: TButton; 
begin
  bt:= TButton.Create(Self);
  try
    bt:= TButton(ObjArray[n]);
    bt.Caption:= 'Nuevo Caption';  
  ...

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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-10-2011 a las 09:33:44. Razón: Añadir ejemplo
Responder Con Cita
  #9  
Antiguo 03-10-2011
rojo raton rojo raton is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 16
Poder: 0
rojo raton Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 03-10-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Hola.

Otra forma de "moldear" que me gusta más es usar "AS":
Código Delphi [-]
s:= (ObjArray[n] AS TButton).Caption;
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #11  
Antiguo 03-10-2011
rojo raton rojo raton is offline
Miembro
NULL
 
Registrado: oct 2011
Posts: 16
Poder: 0
rojo raton Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda! Array dinámico Cristalero Varios 3 01-04-2009 12:56:14
Array Dinamico Gizhe JAVA 4 04-07-2008 20:39:46
Punteros a ARRAY Ñuño Martínez Varios 3 15-11-2007 15:53:40
Array Dinamico VRO Varios 6 14-06-2005 12:40:16
Array Dinamico senpiterno Varios 4 22-07-2004 18:37:06


La franja horaria es GMT +2. Ahora son las 13:15:48.


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
Copyright 1996-2007 Club Delphi