AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Hat Delphi Probleme mit static Variablen?
Thema durchsuchen
Ansicht
Themen-Optionen

Hat Delphi Probleme mit static Variablen?

Ein Thema von frankg · begonnen am 29. Okt 2003 · letzter Beitrag vom 2. Nov 2003
 
frankg

Registriert seit: 20. Mai 2003
Ort: Wetter
72 Beiträge
 
Delphi 7 Architect
 
#1

Hat Delphi Probleme mit static Variablen?

  Alt 29. Okt 2003, 14:02
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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz