Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - sowas wie static


Janus - Sa 08.03.03 19:32
Titel: sowas wie static
Hallo zusammen, gibt es Delphi sowas wie statische Variablendeklarationen ?

Eine lokale Variable, die jedoch beim Verlassen des aktuelle Scope nicht zerstört wird...

Bsp: c - code


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int inc(void){
 static int i = 0;
 return i++;
}

int a = inc(); // a ist jetzt 0
a = inc(); // a ist jetzt 1
a = inc(); // a ist jetzt 2
a = inc(); // a ist jetzt 3

usw...



Gruss Janus

Moderiert von user profile iconKlabautermann: Code-Tags hizugefügt.


MSCH - Sa 08.03.03 19:37
Titel: logisch

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
program test;

var 
  I: Integer; // Globale Variable

procedure Blub;
var I:Integer; // lokale Variable
begin
  I:=9;
end;

procedure Blab;
begin
  I:=8;
end;

end.

Grüße
MSCH


toms - Sa 08.03.03 19:38

Mit der $J+ Direktive (Siehe OH) geht's:


Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Timer1Timer(Sender: TObject);
const
  {$J+} Test : Integer = 7; {$J-}
begin
  Inc(Test);
  Caption := Inttostr(Test)
end;


Moderiert von user profile iconKlabautermann: Code-Tags hinzugefügt.


AndyB - Sa 08.03.03 19:46

Frägt sich nur, wie lange es noch mit {$J+}...{$J-} geht.


Andreas Pfau - Do 13.03.03 22:26

Ich kenne mich damit nicht aus, daher: Wozu konstanten, die variabel sind? Etwa, um sie z uinitialisieren? Das kann man auch mit 'ner Variable, wenn sie keiner Klasse angehört. Oder welchen Hintergrund hat das?


AndyB - Fr 14.03.03 01:02

Andreas Pfau hat folgendes geschrieben:
Das kann man auch mit 'ner Variable
Aber erst ab Delphi 6.
var MyVar: Integer = 10;musste man in den Vorgängerversionen so schreiben.

Quelltext
1:
const MyVar: Integer = 10;                    


Andreas Pfau - Fr 14.03.03 13:56

Ah... so ist das.

dann würde ich 'ne bedingte Kompilierung vorschlagen: Bis D5 mit const, ab D6 mit var.