Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Static- oder Klassenvariablen


Dan75 - Fr 06.09.02 17:53
Titel: Static- oder Klassenvariablen
Hallo,

gibt es in Delphi eigendlich eine Möglichkeit statische Variablen zu definieren.

D.h Werte in einer Variblen über die Beendigung des Programms hinaus zu speichern?

Mögliche Anwendung wäre eine Variable, die bei jedem Programmstart erhöht wird.

In C++/Java wird dazu static verwendet.

Viele Grüsse
Daniel


ao - Fr 06.09.02 17:59

Hallo Dan75,

du müsstest die Variable irgendwo (auf Platte) speichern z.B. mit Hilfe von Ini-Files [http://auq.de/viewtopic.php?t=1833], um Sie dann beim nächsten Programmstart wieder einlesen zu können.

Gruß
Andreas


LCS - Fr 06.09.02 18:35

Hi
wie AO schon geschrieben hat. Aber eine Variable die über das Programmende hinaus "lebt", gibt es nicht. Auch in C++ oder Java existieren Static-Variablen nur während des Programmablaufs.

Gruss Lothar


aogwaba - Fr 06.09.02 18:37

Hi!
Beim Beendigen des Programms werden sämtliche Variablen sowohl bei Delphi als auch bei C++/Java, gelöscht!

Generell ist es in Delphi nicht möglich Variablen als statisch zu deklarieren. Man kann aber die {$J+} Compiler-Directive setzen und dann eine als const deklarierte Variable benutzen. (Damit erlaubt man die Wertzuweisung an eine Konstante, die ist dann komischerweise nicht mehr konstant)

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
{$J+}
implementation

function test:integer;
const z:integer=0;
begin
inc(z);
result:=z;
end;

Wenn du die Daten bis zum nächsten Programmstart 'konservieren' willst, musst du auf einen nichtflüchtigen Massenspeicher zurückgreifen (vielleicht mit Hilfe der TiniFile).

cu
waba

Code-Tags hinzugefügt. TINO


Zufall001 - Sa 07.09.02 10:51

Hallo zusammen,

eine sehr verbreitete Methode zur Speicherung von Daten über das Programmende hinaus nennt sich >Datenbank< :-)

Die Registry unter Windows ist neben der INI-Datei noch einfacher, da hierzu keine extra Datei erzeugt werden muß.

Gruß

Rainer


Dan75 - Mo 09.09.02 11:04

Danke für die vielen Antworten,

ich werde es wohl mit ini oder Registry versuchen, eine Datenbank wäre hier ein wenig überdimensioniert, da es sich nur um einzelne Werte handelt.

Grüsse

Daniel