2009-07-08 28 views
6

busqué en Google, me Binged, ya he visto los otros "duplicados" aquí, pero ninguno de ellos trabajan en Delphi 2009 actualizado hasta actualizar 4.¿Cómo declarar variables estáticas en Delphi 2009?

Al igual que en C#, quiero hacer una variable estática en el línea o lo más corto posible. Al final funciona como una variable global, pero está ordenada.

¿Cuál es la forma más corta de hacer esto en delphi 2009?

EDITAR

que siguieron algunas de sus respuestas, pero no funciona.

Tipo:

type 
TmyClass = class(TObject) 
    var staticVar:integer; 
end; 

código:

procedure TForm1.Button1Click(Sender: TObject); 
var a:integer; 
begin 
    TMyClass.staticVar := 5; // Line 31 
    a := TMyClass.staticVar; // Line 32 
    MessageBox(0,IntToStr(a),'',0); 
end; 

consigo los siguientes errores:

[DCC Error] Unit1.pas(31): E2096 Method identifier expected 

[DCC Error] Unit1.pas(32): E2096 Method identifier expected 
+0

"... pero está ordenado" - ¿Qué se supone que significa eso? – jpfollenius

+0

¿Y en qué nivel de alcance desea declarar su variable estática? Nivel de función? ¿Nivel de clase? ¿Nivel de unidad? – jpfollenius

+0

http://edn.embarcadero.com/article/34324. Esto es lo que quiero. Mire el ejemplo de métodos estáticos. "TMyClass.X: = 17" es lo que quiero usar sin la necesidad de crear una instancia de la clase. Sin embargo, no funciona para mí en delphi 2009. Obtengo errores de sintaxis –

Respuesta

18
type 
    TMyClass = class(TObject) 
    private 
    class var FX: Integer; 
    public 
    class property X: Integer read FX write FX; 
    end; 

o corto tiempo si no se utiliza una propiedad

type 
    TMyClass = class(TObject) 
    public 
    class var X: Integer; 
    end; 

edición: Tenga en cuenta la clase en clase var. Olvidaste esa parte.

+0

He editado mi pregunta para que pueda ver mi código. Recibo un error al usar su código. –

+0

Olvidé "clase". ¡Ahora funciona perfecto! –

+0

También puede especificar un valor predeterminado para la propiedad. – skamradt