Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Statische Variablen definieren ?


Nilsener - Do 18.09.03 10:48
Titel: Statische Variablen definieren ?
Hallo,

wie definiert man statische Variablen innerhalb einer function ?
Die Werte der Variablen sollen nach verlassen der function erhalten bleiben und beim erneuten functionaufruf wieder verfügbar sein, statisch eben.

Dank für Eure Hilfe, Gruss Nils


Christian S. - Do 18.09.03 11:56

Hallo und herzlich Willkommen im Forum!

Die Variablen innerhalb einer Funktion sind danach wieder verschwunden. Variablen, welche Du weiterhin verwenden willst, musst Du global (also außerhalb der Funktion) definieren.

MfG
Peter


AndyB - Do 18.09.03 12:33
Titel: Re: Statische Variablen definieren ?
Nilsener hat folgendes geschrieben:
Die Werte der Variablen sollen nach verlassen der function erhalten bleiben und beim erneuten functionaufruf wieder verfügbar sein, statisch eben.

Bis Delphi 5 (einschl.) kann man das so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function IncrementValue: Integer;
const
  MyStaticVar: Integer = 0;
begin
  Inc(MyStaticVar);
  Result := MyStaticVar;
end;

ShowMessage(IntToStr(IncrementValue)); // 1
ShowMessage(IntToStr(IncrementValue)); // 2
ShowMessage(IntToStr(IncrementValue)); // 3


Ab Delphi 6 muss dazu ein Compiler-Schalter umgelegt werden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
{$IFDEF MSWINDOWS} // Delphi 6+
 {$WRITEABLECONST ON}
{$ENDIF}
{$IFDEF LINUX} // Delphi 6+ und Kylix 1+
 {$WRITEABLECONST ON}
{$ENDIF}


Christian S. - Do 18.09.03 13:19

Variable Konstanten, man lernt doch nie aus ...


AndyB - Do 18.09.03 14:31

Das waren die vorgänger von "Vorinitialisierten Variablen" ala

Delphi-Quelltext
1:
2:
3:
4:
var x: Integer = 10;
begin
  ShowMessage(IntToStr(x)); // 10
end;


Nilsener - Mo 22.09.03 15:39
Titel: Danke, problem gelöst.
Danke Jungs für Eure Hilfe, ich verwende das Beispiel von AndyB und es funktioniert prima.
Gruss Nils