Ver Mensaje Individual
  #10  
Antiguo 01-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 28
Lepe Va por buen camino
Las variables de ese tipo "no están bien vistas" . Pero vamos... se siguen usando.

Tendrás que ver donde necesitas la variable y la visibilidad, me explico:
Código Delphi [-]
unit clases;

interface

uses ....

Type Cliente = class (Tobject)


var pepe: TCliente;

implementation 

uses ...

var jose :TCliente



initialization 
  pepe := TObject.Create;

finalization
  pepe.Free;

Si necesitas que fuera de la unidad, se pueda hacer uso de pepe,
tendrás que declarar la variable pepe en la zona de interface.

Si solo usas la variable temporalmente y no quieres que sea accesible desde fuera de la unidad "Clases", entonces, usa una variable del tipo jose (en la zona de implementación).

En ambos casos, debes llamar al constructor de la clase para crear el objeto. Una de las formas, te la muestro con pepe, creando dicha variable cuando se haga uso de la unidad por primera vez (initialization), y manteniéndolo en memoria hasta que la unidad ya no haga falta (cuando cierres el programa).

Si necesitas más control de si está creada o no, puedes hacerlo así:
Código Delphi [-]
unit clases;

interface

uses ....

Type Cliente = class (Tobject)


var pepe: TCliente;

implementation 

uses ...

var jose :TCliente

procedure uno;
begin
  if not assigned(jose) then // preguntamos si jose ha sido creado en memoria
    jose := TCliente.Create;// no está creado, así que lo creamos
  jose.nombre := 'jose';
  // trabajar con jose

  FreeAndNil(jose); // lo destruimos asegurando que se asigna un nulo, para 
// que la proxima vez que se ejecute este procedimiento funcione
// la pregunta "not assigned(jose)
end;

Lo que si espero que quede claro, es que "pepe" no es lo mismo que "jose"

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita