Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 08-04-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Unos detallitos:
Código Delphi [-]
VAR
  Variable: TClase;
El código anterior define una referencia a un objeto. No es un objeto, sino una referencia. El objeto no existe hasta que lo creas.

Código Delphi [-]
  Variable := TClase.Create;
Con esto estás creando un objeto, no "asignando el constructor de la variable". Ahora "Variable" hace referencia al objeto recién creado.

Código Delphi [-]
  Variable1 := TClase.Create;
  Variable2 := Variable1;
  Variable2.Trabaja;
Con esto Variable1 y Variable2 hacen referencia al mismo objeto. No estás clonando (copiando) el objeto. Al ser referencias al mismo objeto, ejecutar "Variable2.Trabaja" es exactamente lo mismo que ejecutar "Variable1.Trabaja". Recuerda lo que he dicho al principio: Son referencias a objetos, no objetos.

Código Delphi [-]
  Variable1 := TClase.Create;
  Variable2 := Variable1;
  Variable1.Free;
  Variable2.Trabaja;
Si hemos dicho que Variable1 y Variable2 hacen referencia al mismo objeto, resulta lógico pensar que tras ejecutar "Variable1.Free" tampoco podemos usar Variable2, ya que el objeto al que referencia no existe, por lo que resulta en una violación de acceso.

Por cierto: nunca hay que llamar al destructor (Destroy). Para destruir un objeto hay que utilizar "Free".

Código Delphi [-]
  PROCEDURE Ejemplo;
  VAR
    Objeto: TClase;
  BEGIN
    Objeto: TClase.Create;
  END;
En el código anterior, definimos una referencia a un objeto y luego lo creamos, pero no lo destruimos. Al terminar el procedimiento, la refencia al objeto es eliminada, pero el objeto sigue existiendo. Por eso podemos hacer cosas como la siguiente:

Código Delphi [-]
  FUNCTION CreaObjeto: TClase;
  VAR
    Objeto: TClase;
  BEGIN
  { Crea el objeto. }
    Objeto: TClase.Create;
  { Devuelve la referencia al objeto. }
    RESULT := Objeto;
  END;

  PROCEDURE Trabaja (aObjeto: TClase);
  BEGIN
  { Utilizamos la referencia recibida. }
     aObjeto.HazAlgo;
  END;

VAR
  ReferenciaObjeto: TClase;
BEGIN
   ReferenciaObjeto := CreaObjeto;
   Trabaja (ReferenciaObjeto);
   ReferenciaObjeto.Free;
END.

Última edición por Ñuño Martínez fecha: 08-04-2010 a las 12:44:55. Razón: Errores, errores y más errores...
Responder Con Cita
 



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
Crear Clases propias o Usar Existentes jorllazo Debates 19 27-04-2007 03:07:39
Crear y utilizar librerías de clases Val OOP 2 13-04-2007 17:27:11
Crear clases desde Delphi albertoP OOP 6 19-09-2006 21:47:05
crear clases en delphi alextmb Varios 6 24-04-2006 01:40:45
Como usar correctamente ReplaceDialog? clanmilano Varios 1 06-02-2006 13:41:57


La franja horaria es GMT +2. Ahora son las 13:30:27.


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