Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2016
Avatar de Tiaguito_Power
Tiaguito_Power Tiaguito_Power is offline
Registrado
 
Registrado: feb 2007
Posts: 6
Poder: 0
Tiaguito_Power Va por buen camino
Thumbs up Agradecimiento

Muchachos, estoy muy agradecido por los aportes, la verdad no se me cruzo por la cabeza asignar Nil luego del Free
Cita:
Empezado por AgustinOrtu
Por que liberar la memoria de un objeto que vas a volver a usar?
no es que estoy liberando o eliminando un componente que luego voy a volver a usar, el array de Images va de 0 a 250 y en tiempo de ejecución no se crean mas de 6 autitos trafico en simultaneo (del 0 al 5, 1 al 6, 2 al 7, etc), esto está dado por el "alto de la carretera" y una vez que nuestro autito paso y esquivó el trafico este se elimina y solo se tiene en cuenta el indice para que al ejecutar el bucle que desplaza las imagenes trafico omita el eliminado por colisión o sobrepaso.
Cita:
Empezado por Neftali
¿Qué ventaja puede tener dejar la variable apuntando a "nosesabedonde" en lugar de apuntar a nil?
Si bien no me dedico 100% a programación adhiero a la idea de que una variable apunte a nil, ayuda a mantener orden y control sobre estas.

Desde ya agradezco todos los comentarios, aportes, ideas y debates. Aun no me he sentado a probar todo pero en cuanto lo haga les comento los resultados!

Cordiales saludos!!
Responder Con Cita
  #2  
Antiguo 07-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cada uno programa como quiere

Aunque yo sigo sin entender porque tener 250 TImage cuando usas siempre 6 y no mas

Es como tener todos los forms creados apenas arranca el programa y no irlos creando y liberando a medida que es necesario
Responder Con Cita
  #3  
Antiguo 07-03-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Tiaguito_Power Ver Mensaje
Si bien no me dedico 100% a programación adhiero a la idea de que una variable apunte a nil, ayuda a mantener orden y control sobre estas.
NIL/NULLs son valores ultraproblematicos, y se deberian evitar al maximo:

https://dzone.com/articles/the-worst...uter-science-1

Ademas, NIL no es muy diferente de apuntar a "donde sea". NIL no es un valor fijo, no significa nada concreto (que uno le suponga un significado es otra cosa). NIL no es vacio, ni *nada*, ni *algo*. NIL es "indefinido". NIL no es igual a NIL ni es diferente de NIL (Delphi dice que NIL=NIL, pero eso es un error!).

En fin...

-----

Entre los programadores de juegos, hay un esquema que es muy popular, porque es mas eficiente y ademas mas claro a la hora del codigo:

http://gamedevelopment.tutsplus.com/...ign--cms-21052

----

Sin embargo por la simplicidad de tu problema, hago eco de lo que te han dicho. Si ya tienes fijo el tamaño de tu problema, es mas simple que pre-cargues al arranque todo y simplemente reemplaces (en vez de crear/eliminar cada vez). Eso es truco de programacion pa' videojuegos #1 (y que es parte de lo que el link arriba te enseña).
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 07-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
+1 Mario

Basicamente si uno programa como si nil nunca existiera, no deberia haber problemas; al menos no en la base de codigo escrita por el/los programadores del equipo

Código Delphi [-]
procedure FindFiles(StartDir, FileMask: string; recursively: boolean; FilesList:TStringList=nil);

Leyendo el comentario, "devuelve una lista de"... no seria mejor una function para el caso?

Y en el caso de, darle la lista al metodo para que ahi meta lo que va encontrado, es responsabilidad del usuario del metodo suministrar un StringList; basicamente, si no me lo dan, ocurrira la excepcion que tiene que ocurrir, y eso es solo culpa de quien invoca el metodo y no de quien lo programo

Pero como ya dijimos mas arriba, para gustos, colores
Responder Con Cita
  #5  
Antiguo 08-03-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx Ver Mensaje
NIL/NULLs son valores ultraproblematicos, y se deberian evitar al maximo:
Esto puede ser verdad, o, por lo menos, debatible. Pero lo que aquí hablamos es del uso de FreeAndNil, no de la existencia y uso de nil.

LineComment Saludos
Responder Con Cita
  #6  
Antiguo 08-03-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
(Delphi dice que NIL=NIL, pero eso es un error!).
Pues yo le creo, a Delphi
Y FreeAndNil es muy útil en diversas ocasiones.
Responder Con Cita
  #7  
Antiguo 08-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
En realidad la duda del compañero es justamente eso

Para echar culpas diganle a ese Casimiro que arrojó la primera piedra
Responder Con Cita
  #8  
Antiguo 08-03-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por AgustinOrtu Ver Mensaje
En realidad la duda del compañero es justamente eso
Para echar culpas diganle a ese Casimiro que arrojó la primera piedra
Pero estaba justificado porque al ver el código, (bastante por encima, no lo he visto a fondo), vi que hacía un Trafico[i].Free y luego una comparación if Trafico[i]=nil then, por lo que lo primero que me vino a la mente fue eso, que mejor hacer un Trafico[i].FreeAndNil para asegurarse que realmente está a nulo cuando hace la comparación if Trafico[i]=nil then
Responder Con Cita
  #9  
Antiguo 08-03-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero estaba justificado porque al ver el código, (bastante por encima, no lo he visto a fondo),
No te preocupes, no estás taaaan viejito . Viste bien, pues es justo de lo que trata la pregunta inicial:

Cita:
Empezado por Tiaguito_Power
si los valores del trafico estan dentro de los valores del autito este hace un Trafico[i].Free y elimina el TImage. Lo que necesito saber es como verificar a que componente del array se le hizo el Free ya que si el autito colisiona con algun trafico este debe validarse ya que el for que ejecuta el movimiento del trafico no lo sabe y cuando quiere acceder a un objeto eliminado me tira error.


LineComment Saludos
Responder Con Cita
  #10  
Antiguo 08-03-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
No te preocupes, no estás taaaan viejito
Cierto, cierto
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
verificar existencia de archivo txt JuanOrtega Varios 3 20-10-2011 10:51:19
Verificar la Existencia de un Archivo sidneyb Varios 2 22-04-2008 22:16:19
verificar existencia antes de insertar sidneyb SQL 7 10-03-2008 15:26:50
Copiar Bitmap de un TImage a otro TImage quinqui Gráficos 2 24-01-2008 15:22:30
verificar la existencia de una base de datos gushmaish Conexión con bases de datos 3 20-02-2007 15:08:16


La franja horaria es GMT +2. Ahora son las 21:04:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi