Ver Mensaje Individual
  #5  
Antiguo 04-03-2012
Gattaca Gattaca is offline
Miembro
 
Registrado: feb 2009
Posts: 31
Reputación: 0
Gattaca Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola,
El problema tal vez esté en la creación del objeto de la clase TItem que regresa la función.

A mi una vez haciendo un trabajo para la facultad me salía un AV y todo parecía correcto; las creaciones y liberaciones. Yo estaba trabajando en una lista, a la vieja escuela con punteros, y no veía algo malo. Si dejaba corriendo mi aplicación llegaba el momento en que saltaba el AV. Luego debugueando, y controlando a mano, para ver donde saltaba descubrí que en realidad el error estaba en que el recorrido sobre la lista y las instrucciones que hacía se ejecutaban tan rápido que no daba tiempo a que las reservas de memoria me creara los nodos.

Lo tuve que solucionar forzandole a que se tome un tiempo entre un New() y el uso de la variable.
Muy posiblemente lo tuyo será un caso similar.

Saludos,
Hola,

Ciertamente debo decir que tu problema tiene mucha coherencía, y es igual al mio, usando la función New he podido arreglar el error, cargando todos los objetos binarios (+30000) en menos de 1 segundo!

Estoy sorprendido como, aunque el codigo esté correcto, el puede no funcionar correctamente, y aún no me explico ¿cómo?, pero supongo que tiene que ver con la memoria, ya que leer un archivo binario en un loop for puede funcionar radicalmente rapido, causando así que donde está alojada mi variable en la memoria, sea reescribida a cada ó borrada a cada momento, según DelphiBasics.co.uk, la palabra reservada New tiene está pequeña explicación;

Código:
New is used when the storage is requirement is fixed in size. Use GetMem to dictate the exact storage size allocated.
El ejemplo dado usaba pointers, y solo tube que reescribir mi clase TItem a un record y crear un punto en la memoria que siempre sea fijo, acá usando New supongo.

En fin, ahora mi codigo funciona correctamente, y ya veo el buen uso de New con respecto a las memorias

Pido perdon si mi explicación suena incoherente, pero soy muy joven y estoy muy metido en esto de la programación.

Muchas gracias nuevamente a todos, ayudandome desde el 2009 jejeje
Un saludo!

Última edición por Gattaca fecha: 04-03-2012 a las 09:05:18.
Responder Con Cita