Seite 1 von 1
Achtung bei Variablen, die als "Static" gekenntzei
Verfasst: 24.06.2007 19:10
von Xaby
Code: Alles auswählen
Procedure.l Statc()
Static c.l=0
c+1
ProcedureReturn c
EndProcedure
Procedure.l Statx()
Static c.l
c=0
c+1
ProcedureReturn c
EndProcedure
For i=1 To 10
Debug Statc()
Next
For i=1 To 10
Debug Statx()
Next

Verfasst: 24.06.2007 19:16
von Kaeru Gaman
öhm.. sorry, wo ist die relevanz deines Postings?
das verhalten ist sowas von gnadenlos selbstverständlich,
das muss jedem klar sein, der STATIC verwenden will.
außerdem, wenn das ein Hinweis für Anfänger sein soll,
hättest du das eher in CT&T posten sollen....
und wenn, dann darfst du auch nen absatz dazu schreiben...
(das ich das mal zu Xaby sage... *rotstift und kalender rauskram*)
Verfasst: 24.06.2007 19:25
von Xaby
Was gibt es denn außer Static, was man in Prozeduren verwenden kann?
War ne Fehlerquelle bei mir. Ich dachte, wenn ich
Static c.l=0
schreibe, dass C automatisch auf Null gesetzt wird, wenn ich die Prozedur aufrufe. Schien aber nicht so.
Wie man das Problem lösen kann, hab ich ja selbst rausgefunden.
Aber für Tipps und Tricks wäre es wohl nicht Tricksig genug.
Als Anfänger würde ich gern wissen, was es außer Static noch gibt, was man für EnableExplizit nutzen kann.

Verfasst: 24.06.2007 19:33
von Xaby
Dank euch, irgendwie war mir ja so, aber die Hitze auf den Abend

Verfasst: 24.06.2007 19:36
von ts-soft
Sry, habs gelöscht bevor ich dein posting las, dachte es wäre doch falsch,
weil du drückst dich auch immer so unverständlich aus (jedenfalls für mich)
Verfasst: 24.06.2007 19:39
von edel
Das ist Sinnlos :
hier wird c beim initialisieren auf 0 gesetzt :
um Variablen in einer Procedure von aussen zu schuetzen :
Verfasst: 24.06.2007 23:29
von Kaeru Gaman
genau.
wenn du eine variable bei jedem aufruf gleich initialisiert haben willst,
benötigst du Protected.
Static sorgt dafür, dass der wert vom vorherigen Funktionsaufruf erhalten bleibt,
also ist es eigentlich logisch, dass eine initialisierung nur beim ersten aufruf greift.
sonst wäre ja die verwendung von Static sinnlos.
man müßte keinen speicher die ganze laufzeit blockieren,
wenn man beim nächsten aufruf eh nen festen startwert haben will.
Static dient ja eben dazu, um den wert zwischen zwei aufrufen zu erhalten.