Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Variables de clase (https://www.clubdelphi.com/foros/showthread.php?t=34998)

supermilloriver 28-08-2006 15:52:52

Variables de clase
 
Hola's:
Mi pregunta es la siguiente:
¿Cómo hago para declarar variables de clase?, yo se que un procedumiento de clase lo declarro: class procedure blabla..., pero las variables?

gracias y saludos.
Gabriel

kuan-yiu 28-08-2006 16:08:01

Pues del modo habitual:
Código Delphi [-]
type
TMiClase = class()
 // Lo que sea

var
miVariable: TMiClase;

¿O te refieres a otra cosa?

DarKraZY 28-08-2006 16:09:18

Hola supermilloriver

En el caso de declarar variables haces como lo harías normalmente:
Código Delphi [-]
var
  variable: TClass;
begin
  variable := TClass.Create;
end;

Pero si sólo deseas utilizar los procedimientos de clase no es necesario declarar nada, basta con utilizar la clase:
Código Delphi [-]
begin
  TClass.EjecutarMetodo; // metodo de clase
end;

roman 28-08-2006 17:46:16

Siento que estamos confundiendo. La pregunta no es cómo declarar una variable de una clase dada sino como declarar una variable de clase en una clase dada.

:D

Sí, es confuso. Pero una cosa es tener una variable cuyo tipo de datos es una clase dada:

Código Delphi [-]
var
  Clase: TLaClaseDada;

y otra que una clase dada tenga una variable de clase:

Código Delphi [-]
type
  TLaClaseDada = class(TLaClaseAncestra)
    class UnaVariable: UnTipoDeDatos;
  end;

de manera de poder usar UnaVariable sin necesidad de crear una instancia de la clase, tal como indica DarKraZY para los procedimientos (de clase).

Bueno, luego de este rollo, la mala noticia:

Delphi no admite variables de clase.

// Saludos

maeyanes 28-08-2006 17:55:13

A menos que se esté usando Delphi 2006...

Un ejemplo de la ayuda:

Código Delphi [-]
type
  TMyClass = class
  public
    class var        // Introduce a block of class static fields.
      Red: Integer;
      Green: Integer;
      Blue: Integer;
    var              // Ends the class var block.
    InstanceField: Integer;
  end;

Como usarlas:

Código Delphi [-]
TMyClass.Red := 1;
TMyClass.Green := 2;
TMyClass.Blue := 3;

Otra forma:

Código Delphi [-]
var
  myObject: TMyClass;

// This code has the same effect as the assignments to Red, Green, and Blue above:
myObject.Red := 1;
myObject.Green := 2;
myObject.Blue := 3;

Saludos...

roman 28-08-2006 17:59:31

¡Ah! Gracias por la aclaración Marcos. Si el IDE no fuera tan lento, esto me animaría más a usar D2006. :)

// Saludos

maeyanes 28-08-2006 18:03:15

Pues si instalas solo la personalidad de Win32, no es tan lento... claro, ahora lo tengo usando en una P4 Dual Core con 512MB de RAM... :p


Saludos...

supermilloriver 28-08-2006 21:06:47

Era eso
 
Cita:

Empezado por roman
Siento que estamos confundiendo. La pregunta no es cómo declarar una variable de una clase dada sino como declarar una variable de clase en una clase dada.

:D

Sí, es confuso. Pero una cosa es tener una variable cuyo tipo de datos es una clase dada:


Código Delphi [-]
var
Clase: TLaClaseDada;





y otra que una clase dada tenga una variable de clase:


Código Delphi [-]
type
TLaClaseDada = class(TLaClaseAncestra)
class UnaVariable: UnTipoDeDatos;
end;





de manera de poder usar UnaVariable sin necesidad de crear una instancia de la clase, tal como indica DarKraZY para los procedimientos (de clase).

Bueno, luego de este rollo, la mala noticia:

Delphi no admite variables de clase.

// Saludos


Bueno, gracias Román, era eso a lo que me refería, aunque me decepcionó la mala noticia, jeje.
Salutti

maeyanes 28-08-2006 21:31:23

Que versión de Delphi usas? Por que si es menor a Delphi 2006, pues si, la noticia es mala...



Saludos...

dec 28-08-2006 22:09:30

Hola,

Cita:

Empezado por maeyanes
Que versión de Delphi usas? Por que si es menor a Delphi 2006, pues si, la noticia es mala...

Bueno. Más arriba Román dijo cómo se pueden utilizar variables de clase en versiones anteriores de Delphi:

Código Delphi [-]
type
  TLaClaseDada = class(TLaClaseAncestra)
    class UnaVariable: UnTipoDeDatos;
  end;

Lo que parece es que BDS 2006 amplía el asunto y pueden ahora declararse bloques de ese tipo de variables, pero, en Delphi 7, por ejemplo, pueden declararse variables de clase tal como se ve.

roman 28-08-2006 22:19:00

¡Nooo! :eek:

Quizá no fui claro. Yo sólo estaba aclarando lo que sería una variable de clase pero como mencioné al final, en Delphi (versión <= 7, según ahora sabemos) no existen las variables de clase. La declaración que citas era sólo la hipotética forma de hacerlo que- además -parecería ser incorrecta.

// Saludos

dec 28-08-2006 23:03:40

Hola,

Caray. Pues yo no sólo hubiera jurado que podían utilizarse variables de clase en Delphi 7 y versiones anteriores,... ¡es que debo haber soñado que las he utilizado alguna vez! Porque así me lo parecía... Bueno. Pues lamento haber metido la pata. ;)


La franja horaria es GMT +2. Ahora son las 11:57:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi