2009-07-08 15 views
6

Ho cercato su google, ho binged, ho già visto le altre "duplicati" qui, ma nessuno di loro lavorare in Delphi 2009 aggiornato fino ad aggiornare 4.Come dichiarare le variabili statiche in Delphi 2009?

Come in C#, voglio fare una variabile statica in su linea o il più breve possibile. Alla fine funziona come una variabile globale, ma è ordinata.

Qual è il modo più breve per farlo in Delphi 2009?

EDIT

ho seguito alcune delle sue risposte, ma non funziona.

Tipo:

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

codice:

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; 

Ottengo i seguenti errori:

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

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

"... ma è ordinato" - cosa dovrebbe significare? – jpfollenius

+0

E su quale livello di ambito si desidera dichiarare la propria variabile statica? Livello di funzione? Livello di classe? Livello unità? – jpfollenius

+0

http://edn.embarcadero.com/article/34324. Questo è ciò che voglio. Guarda l'esempio dei metodi statici. "TMyClass.X: = 17" è ciò che voglio usare senza la necessità di creare un'istanza della classe.Tuttavia, non funziona per me in delphi 2009. Ottengo errori di sintassi –

risposta

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

o più breve se non si utilizza una proprietà

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

modificare: Nota del classe in classe var. Hai dimenticato quella parte.

+0

Ho modificato la mia domanda in modo da poter vedere il mio codice. Ottengo un errore durante l'esecuzione del codice. –

+0

Ho dimenticato "classe". Ora funziona perfettamente! –

+0

È inoltre possibile specificare un valore predefinito per la proprietà. – skamradt