FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Error de declaracion de Clase Dinamica
Hola a todos los amigos del Foro.
Acudo a su gran experiencia y conocimiento para el problema que tengo, detallo todo para que me entiendan el problema y me puedan ayudar:
El problema que me esta generando es que cuando creo una variable de la clase: TEMPRESAS en ciertos momentos me esta devolviendo error ("Fuera de Memoria") quiero entender que eso es por los ARRAY qye estan definidos. Quisiera me apoyen a evitar este error que no siempre me sale, si bajo el tamaño del array a un numero menor ya no me sale el error. Preguntas: 1. La clase "TEmpresas" debe tener un arreglo dinámico ya que va a recibir una lista grande de empresas la cantidad no se sabe ya que es variable. entonces hay alguna forma de definir que el arreglo sea dinámico y cuando se tenga el número de registros se cree en base a ello. no sé si eso evitara que ya no salga el mensaje de ("Fuera de Memoria")? 2. Si ven el Record "TEmpresa" este también tiene un arreglo y quisiera saber si es posible también hacerlo dinámico, similar a lo comentado en el punto 1. 3. He definido así la clase por motivo que me va a llegar información desde un servicio rest(JSON) y tiene esta misma estructura y como luego la data de la clase guardara en un ClientDataSet, ¿no si es la mejor alternativa la que he elegido? Por favor si hay algún amigo que me ayude a mejorar la clase o me indique ejemplos o donde está el error que estoy cometiendo le agradecería mucho. Muchas Gracias por el apoyo Saludos. |
#2
|
||||
|
||||
Hola!.
El Array si puedes definirlo como dinámico y luego establecer su tamaño Cita:
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#3
|
||||
|
||||
Cita:
De todos modos yo te aconsejaria que te replantees el diseño, porque no se si tenga mucho sentido tener cargadas en memoria las 15,000 empresas, para las cuales ademas hay 200 rubros para cada una. Otro problema puede ser porque los tipos record se alojan en la stack, y no en la heap como es el caso de las clases. Respondiendo a las preguntas: Cita:
De todos modos hay mejores alternativas que gestionan de manera automatica y de forma mucho mas eficiente un arreglo. La solucion mas adecuada para tu problema es usar una clase tipo lista, como TList<T> Cita:
Para declarar una variable de tipo arreglo dinamico debes primero crear un tipo: Esto no se permite (si no me falla la memoria)
Esto si:
De todos modos, yo prefiero utilizar genericos, y Delphi ya provee un tipo de arreglo dinamico generico Código PHP:
Cita:
|
#4
|
|||
|
|||
Para declarar un array dinámico solo tienes que declararlo de la siguiente forma:
y después para asignarle el tamaño y liberarla:
__________________
Un saludito. |
#5
|
||||
|
||||
En este caso, como habla de recibir los datos desde un JSON, es posible que esté usando una librería que al traducirlos, use Records para almacenar las estructuras que recibe. Al menos manejando SuperObject debí manejarlo así.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#6
|
||||
|
||||
Muchas Gracias amigos movorack, AgustinOrtu, jorge82 por sus respuestas.
Se me olvido comentar que el sistema que estoy dando mantenimiento esta usando Delphi 6 y Veo que hay sugenrencias que se pueden aplicar en versiones mas actualizadas. Disculpen por olvidar comentar un detalle importante de la version del Delphi y por ello estoy usando la libreria uLkJSON.pas ya que tambien veo que las versiones mas actuales manejan mejor los servicios REST. quiero agregar una pregunta mas que me esta pasando con dicha libreria y capaz alguien ya le haya pasado dicho problema: Al momento de usar los objetos LkJSON si bien no tengo problemas en aplicar la estructura JSON a sus objetos. Al momento de obtener un valor y este tiene un caracter acentuado (á, é, í, ó, ú) me esta devolviendo '' vacio. en la estructura JSON si esta el valor con los caracteres especiales. alguna sugerencia para que permita obtener el valor correcto y con los caracteres que viene en el JSON. Estaba pensando hacer una funcion que reemplace esos caracteres por codigos validos en la estructura JSON antes de acloparlo a la libreria LkJSON y al asignarles a un Field cambiarlo por el caracter correcto. alguna otra solucion para esta ultima pregunta? |
#7
|
||||
|
||||
Disculpen mi poca experiencia en Delphi me pueden ayudar a aclara como seria la forma correcta:
¿Como le asigno a ListRubros.Rubros el espacio en memoria mediante SetLength(XXX, RecordCount)? Como deberia ser la definicion correcta? Muchas Gracias por sus comentarios. |
#8
|
|||
|
|||
Cita:
__________________
Un saludito. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error con clase utilitaria | andresenlared | JAVA | 0 | 10-10-2013 01:03:33 |
Como obtener propiedad de una clase que está en una bpl dinámica? | AFilth | Varios | 14 | 07-03-2007 18:04:04 |
Tengo un problema de un Error en la declaración de variables | Robert01 | Varios | 4 | 03-03-2007 06:45:50 |
error clase no registrada | samame | Varios | 2 | 21-04-2004 18:49:49 |
Me da error en la clase pprinterinfo2 | fanon | Impresión | 7 | 28-05-2003 20:04:59 |
|