Hallo all!
Ich programmiere momentan mal wieder etwas durch die Gegend, und dabei ist mir folgendes aufgefallen: Kann es sein, dass Delphi Probleme damit hat, static Variablen auseinanderzuhalten? Zuerst mal worum geht es? Sprachen wie C++ unterstützen sogenannte static Variablen, das sind Variablen, die ihren Wert auch dann nicht verlieren, wenn die Funktion verlassen wird. Delphi bietet diese Variablen nicht direkt an, man kann aber ein ähnliches Verhalten erzeugen, indem man zuweisbare typisierte Konstanten verwendet (muss man für den Compiler explizit einschalten). Ich habe draufhin mal folgendes programmiert:
Delphi-Quellcode:
procedure Test1;
const
TestStat : Boolean = TRUE;
begin
if Bedingung1 then
TestStat := TRUE
else
TestStat := FALSE;
end;
procedure Test2;
const
TestStat : Boolean = TRUE;
begin
if Bedingung2 then
TestStat := TRUE
else
TestStat := FALSE;
end;
Die Idee hinter dieser Programmierung war, so etwas wie ein Statusflag für die Prozedur zu erzeugen. Der obige Versuch scheitert. TestStat, obwohl in beiden Prozeduren lokal definiert wird offensichtlich wie eine globale Variable verwendet. Ändert sich der Wert von TestStat in Test1, ändert sich der Wert von TestStat in Test2 auch und umgekehrt. Ich habe das auf den gleichen Namen zurückgeführt und daraufhin folgendes programmiert:
Delphi-Quellcode:
procedure Test1;
const
TestStat1 : Boolean = TRUE;
begin
if Bedingung1 then
TestStat1 := TRUE
else
TestStat1 := FALSE;
end;
procedure Test2;
const
TestStat2 : Boolean = TRUE;
begin
if Bedingung2 then
TestStat2 := TRUE
else
TestStat2 := FALSE;
end;
Das kuriose ist jetzt aber, dass trotz der unterschiedlichen Namen TestStat1 und TestStat2 gleich behandelt werden, d.h. ändert sich TestStat1, ändert sich TestStat2 auch automatisch. Hat von Euch schon jemand mal versucht so etwas zu programmieren? Ich weiss jetzt auch nicht, ob der Fehler bei mir oder bei Delphi liegt. Schon mal vielen Dank für (zahlreiche) Antworten.
Viele Grüsse
Frank