![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Me dejaste pior
![]() Cita:
![]() Voy a tener que llamar al área 51 porque parece que se fugaron de allí. ¿Cómo le hacen para saber tantas cosas? ![]() Evidentemente hay cosas que mi cabeza no logra entender y captar porque no tiene la preparación... pero esto... ¡se me hace que es más fácil encontrar la teoría unificadora de la física! Supongo que en una semana van a dar conocer la solución ¿no? Porque me han dejado intrigado.Saludos, |
|
#2
|
||||
|
||||
|
He de decir que lo de las siglas sigo sin entenderlo, aunque el término maleable tampoco me convence mucho.
Lo que es cierto es que la respuesta es mucho más sencilla de lo que parece, tal como lo comentó Al desde un principio. También es elegante y segura de usar, no como mi segunda solución, que voy a esbozar para que los demás no tomen el camino equivocado: Los campos en un objeto se acomodan de manera similar a un registro con un primer campo oculto que es la referencia a la clase a la que pertenece el objeto. Los campos aparecen en el orden en que están declarados y cada objeto guarda los campos de su clase y los de todas sus ancestras. Así pues, el método "sucio" de acceder al campo X pasa por saber el offset o desplazamiento del campo en el objeto y acceder libremente:
Calcular dicho offset no es tan sencillo pues hay que tomar en cuenta el alineamiento que menciona Al. Sin embargo, puede hacerse examinando el código fuente de la clase. Si la clase tiene ancestros nos podemos ayudar con AncestroDeClaseDeObj.InstanceSize, ya que InstanceSize sí toma en cuenta el alineamiento. Aún así, hay que examinar los campos de la clase final hasta llegar a X. // Saludos |
|
#3
|
||||
|
||||
|
¡¡¡ ¿¿¿Ya lo han descubierto??? !!!
![]() Yo es que no he entendido las pistas, que parecen encriptadas ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
||||
|
||||
|
Ahora que leo lo comentado por Román veo que mi idea estaba bien encaminada, por eso dije:
Cita:
![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Pero ojo, la solución que esbocé no es la que busca Al.
// Saludos |
|
#6
|
||||
|
||||
|
Román, me alegra mucho tener la certeza de que has llegado a la misma solución que yo.
![]() Cita:
![]() Amigos, reitero lo dicho. La cosa no requiere de meterse a las entrañas de la memoria o hacer desplazamientos de punteros y cosas de tan profundo nivel. Marcelo, no será necesario practicarle ningún exorcismo a ecfisa para encontrar las tres letras que te ayudarán a resolver... ![]() ![]() |
|
#7
|
||||
|
||||
|
Je, je. Cuidado con lo que dices
![]() // Saludos |
|
#8
|
||||
|
||||
|
Bueno, aunque sabía la solución, no me decidía por la forma de implementarla. Aquí pongo una opción.
Contestando a Cita:
y el código que hay que escribir está en el archivo adjunto. La contraseña, para quien quiera ver la solución, es el tipo de datos (todo en minúsculas) involucrado ![]() Por cierto, del primer intento (fallido) de solución, que tenía que ver con las funciones del Heap, sale este koan: Cita:
|
|
#9
|
||||
|
||||
|
Señores: Confirmado, Román ha sido el primero en resolver el problema satisfactoriamente.
¡Enhorabuena! ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Dudas sobre Delphi 2011 | cmm07 | Varios | 9 | 15-01-2011 14:48:06 |
| Lazarus Vs. Delphi 2011 (2012? 2014?) | gatosoft | Debates | 33 | 14-08-2010 21:12:05 |
| Delphi 2011 (Fulcrum) | heroe | Noticias | 11 | 15-07-2010 10:00:21 |
| delphi 2011 | JXJ | Noticias | 13 | 03-04-2010 00:42:34 |
|