![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Copiando y pegando tu ejemplo:
Cita:
|
|
#2
|
||||
|
||||
|
Donald, quizas deberias cambiar esta linea:
por esta otra.
de esta manera estas instanciando la clase dentro de un objeto, en el ejemplo anterior lo asignas como perteneciente a esa clase, pero nunca se inicializa.
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
#3
|
||||
|
||||
|
A manera de explicación a los compañeros que no les quede claro, digamos que un constructor como TObject.Create llama en automático al método de clase NewInstance. Siendo un método de clase, NewInstance (al igual que el constructor) existe independientemente de cualquier instancia de la clase, y es el encargado de asignar memoria para el nuevo objeto y devuelve un apuntador (referencia) a dicho objeto. Ese valor devuelto es el que se asigna a la referencia en una construcción como
Si simplemente hacemos
el objeto sí se crea, pero nunca lo asignamos a la variable ds y de ahí todos los riesgo de violación de acceso, pues ds, al no haber sido inicializado, apunta a un lugar "aleatorío" en la memoria (o nil en el caso de variables globales). En resumen, el objeto existe, pero ds no apunta a él. // Saludos |
|
#4
|
||||
|
||||
|
Bueno Roman, gracias por escribir lo que te explique, no encontraba las palabras, te equivocastes en unas cositas pero no importa
![]() ![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
#5
|
||||
|
||||
|
Disculpa Eduardo, trataré de poner más atención la próxima vez
![]() // Saludos |
|
#6
|
|||
|
|||
|
Gracias de nuevo a todos.
La verdad es que ya uso assigned(loquesea). Desde que lo usé no volvió a dar problemas. Tambien estoy usando lo que aconsejasteis: FreeAndNil para otros casos, no para el que estaba trabajando cuando la consulta en el foro, ya que ese ClientDataset solo se libera al terminar el programa. Cada método comprueba con assigned si está creado y si no lo crea asi: cds:= TClientDataSet.create(self) Aunque en el foro puse ds.create(self) realmente nunca lo creo así. Lo puse así por la rapidez ya que lo importante era la comparación a nil del If, ni tampoco lo libero, ya que se libera en onClose de la form. El programa va de lujo usando el assigned
__________________
Saludos Cordiales. ------------------ |
|
#7
|
||||
|
||||
Irrefutable. Me equivoqué feo.Quería mostrar el caso en que un objeto que se crea y usa de una vez, sin necesidad de acceder mas tarde a este, caso una tarea que se crea para que realice cierto proceso y se destruye sola al terminar en ese caso si es valido algo como: No aplica a TClientDataset , ni cerca. Saludos. |
|
#8
|
||||
|
||||
|
¡Ah! Ok. Si todo se hace en el constructor pues es posible que pueda llamarse a Create desde una variable en lugar de referencia de clase misma. Aunque serán casos raros ¿no?
// Saludos |
|
#9
|
||||
|
||||
|
Cita:
las he usado en algunas ocasiones. Saludos. |
|
#10
|
|||
|
|||
|
Hola...
Aquí metiendo mi cuchara ![]() En algunas ocasiones se puede hacer para ejecutar hilos (TThread), yo lo he hecho en alguna ocasión, simplemente hago:
Saludos... Última edición por maeyanes fecha: 14-11-2008 a las 19:50:59. |
|
#11
|
||||
|
||||
|
Je, je, ahora ya estamos con los TThread. Pues sí, es como dices maeyanes. E incluso para otro tipo de situaciones puede definirse un método de clase que se encargue de instanciar un objeto, hacer cositas con él, liberarlo y se acabó.
Por ejemplo, si tenemos una clase TPropiedadesPersona, derivado de TForm para editar las propiedades de un objeto TPersona, puede definirse un método de clase:
De esta manera, para editar las propiedades, simplemente haríamos:
sin más nada. // Saludos |
|
#13
|
||||
|
||||
|
Cita:
![]() Parece que no basta con tener el diccionario de 2 kilos. En algún momento tendré que volver a tomar cursos de inglés. ![]() Si no es molestia, ¿Alguien podría resumirlo en castellano? No me queda muy en claro la relación de dicho documento con lo tratado aquí. Y lo digo precisamente por lo que leo... ¡Habla sobre punteros a métodos! Tal como lo ha señalado roman: Cita:
Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| saber si alias esta creado en el dbe | Manuel | Varios | 2 | 13-10-2006 18:27:37 |
| Como saber si un Formulario ha sido creado | Durbed | OOP | 7 | 13-10-2005 13:06:28 |
| destruir objeto creado en tiempo de ejecucuión | jaime cotino | Varios | 5 | 28-06-2005 20:45:36 |
| Saber si un formulario ya está creado o no. | Tecnic2 | OOP | 2 | 27-09-2004 13:27:01 |
| ¿Cómo saber si un Form está creado? | nesetru | Varios | 5 | 09-02-2004 12:59:37 |
|