FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
Cita:
Estas explicándome que hace el código y que es self . Lo que quiero saber es porque razón un puntero a la nada (nil) es seguro. Saludos. |
#22
|
||||
|
||||
De hecho (aunque no lo voy a jurar ) esto es seguro:
// Saludos |
#23
|
||||
|
||||
Cita:
Cita:
Para agregar a la charla y enriquecerla , un post sobre los efectos colaterales de la forma en que esta implementado, sobre todo cuando usas tareas: link Saludos. |
#24
|
||||
|
||||
Cita:
FPC se queja con ese código, por lo tanto prefiero escribir código seguro que experimenta con lo que se banca la VCL. Saludos |
#25
|
||||
|
||||
Cita:
En el ejemplo anterior, la llamada Persona.Saluda realmente genera este código: Código:
call TPersona.Saluda Si tuviéramos
entonces sí que habría problemas, porque no ha sido asignada memoria a ningún objeto y por tanto el campo Persona.Saludo no existe aún. // Saludos |
#26
|
||||
|
||||
... me están estressanndo
Sal%&(/% Invalid pointer operation.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#27
|
||||
|
||||
Por eso lo tengo comentado:
// Saludos no vaya a ser... // Saludos |
#28
|
||||
|
||||
Al igual que lepe me dejaron frito el cerebro.
Leí el link que señala Donald y la verdad es que no lo entendí ¿Dónde está el problema? Saludos, |
#29
|
||||
|
||||
Cita:
Tratándose de objetos, debes recordar que el código compilado de las rutinas (métodos) se guarda en ubicaciones de memoria distintas a donde se alojan los campos de datos de una instancia. De hecho, por dentro, el bloque de memoria que ocupa una instancia de objeto es meramente una "estructura" del estilo Record, teniendo un primer "campo" invisible que guarda un apuntador a donde se encuentra definida la clase a la que pertenece, su herencia, métodos y otros elementos de RTTI. El código compilado está disponible para el programa desde que arranca la aplicación, así que los métodos que el compilador incluyó en el programa ejecutable pueden (mas no necesariamente "deben") ser llamados sin necesidad de usar una instancia real de por medio, como bien lo ejemplificó Román más arriba. Lo inseguro es hacer esto con un método que emplee uno de los campos de la instancia o algún otro dato de memoria cuya disponibilidad (existencia) dependa de que el objeto sea "real", como ya también lo ejemplificó Román. El método Free no "toca" nada de la memoria de datos. Se limita a preguntar si Self es otra cosa distinta de Nil, para luego llamar al destructor con seguridad. Por ello es que no preocupa su uso con un objeto Nil. Fue concebido tal como es para que el programador no tuviese que preguntar si una variable objeto es Nil antes de intentar liberar dicho objeto. Cita:
Cita:
Espero haber ayudado a esclarecer un poco el asunto. Saludos a todos y no se estresen porque me estreso. Al. P.D. Cabe mencionar que la llamada a métodos virtuales con un objeto Nil sí es totalmente inviable y en todos los casos elevará una excepción. Porque, para hacer el late binding, se necesita conocer cuál es la clase real de la instancia, es decir, leer ese primer campo invisible que está alojado en los primeros cuatro bytes de la memoria del objeto. Siendo el objeto Nil (dirección de memoria 0), no hay tal dato. En todo caso el programa intentará leer los primeros cuatro bytes de la RAM, posición de memoria no accesible. Free NO es virtual, carecería de sentido si lo fuera. Última edición por Al González fecha: 12-11-2008 a las 22:00:57. |
#30
|
||||
|
||||
Cita:
Cita:
Saludos |
#31
|
||||
|
||||
Cita:
del libro Delphi in a Nutshell de Ray Lischner Cita:
Cita:
// Saludos |
#32
|
||||
|
||||
¿ que es nil ?
jojojojo
__________________
|
#33
|
||||
|
||||
#34
|
||||
|
||||
changos, era broma maese Roman
__________________
|
#35
|
||||
|
||||
Cita:
Ahora si, a ver si la consola de mi cabeza empieza a mandar comandos PANIC OFF. Saludos, |
#36
|
||||
|
||||
Porque el punto de la discusión donde hiciste esa referencia («un post sobre los efectos colaterales de la forma en que esta implementado, sobre todo cuando usas tareas») era que no entendías o no dabas por válido el uso del método Free con un objeto Nil. Como si ese artículo de Miller pudiera llevarnos a concluir que la práctica del "ObjetoNil.Free" fuese algo desaconsejable.
Quizá pregunte una estupidez, pero ¿qué es FPC? Google me llevó a la página del Fútbol Profesional Colombiano. Mi pregunta se refería a eso de «prefiero escribir código seguro que experimenta con lo que se banca la VCL». En espera de tus apreciaciones. Saludos. Al González. |
#37
|
||||
|
||||
Cita:
Cita:
Cita:
Saludos. |
#38
|
||||
|
||||
Cita:
Además, leer tanto texto sin Internet y un diccionario en la mano me ayudó a conseguir mis primeras nociones reales del idioma inglés. Un abrazo esquemático y textual. Al González. |
#39
|
||||
|
||||
Cita:
Cita:
Ahora sé qué es FPC. Pero entonces acláranos una cosa por favor, ¿Free Pascal Compiler no acepta ese uso del método Free, que en Delphi es de lo más estable, tradicional, útil y seguro? Y si realmente sí es aceptado por FPC, al contrario de lo que das a entender, ¿no sería mejor que externaras tus conclusiones claras y reales respecto al empleo del método Free con objetos Nil, una vez consideradas las explicaciones dadas en mensajes anteriores? De lo contrario, algunos lectores futuros del este hilo podrían albergar dudas respecto a la validez y seguridad de usar ObjetoNil.Free. En buen plan. Un abrazo por la verdad. Al González. |
#40
|
||||
|
||||
Cita:
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Buenas prácticas de programación | elcigarra | OOP | 18 | 07-11-2008 17:05:27 |
Siete prácticas para un óptimo y rápido desarrollo de software | poliburro | Noticias | 5 | 30-07-2008 16:48:55 |
buenas maneras... | BlueSteel | Humor | 23 | 13-06-2008 08:11:21 |
Buenas Noticias | faustoffp | Noticias | 0 | 04-09-2006 06:33:06 |
Ayuda Practicas En Delphi | MARIAM23 | Varios | 1 | 22-07-2006 01:19:34 |
|