Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 04-03-2012
Gattaca Gattaca is offline
Miembro
 
Registrado: feb 2009
Posts: 31
Poder: 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
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
Ayudenme Rapido, Rapido omarys Varios 6 04-06-2011 09:45:34
Talento increible..... egostar Humor 4 01-08-2008 07:04:37
Increible truco de magia!! FunBit Humor 5 25-10-2006 20:37:56
Rapido con Delphi, y Lento desde fuera de delphi JoseQ Varios 0 08-09-2005 10:54:48
La increíble tecla F1 en Delphi dec Varios 1 31-08-2005 22:26:45


La franja horaria es GMT +2. Ahora son las 14:57:58.


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