Gültigkeit von PRIVATE Variablen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

i
**
Beiträge: 26
Registriert: So, 07.05.2006 23:26

Gültigkeit von PRIVATE Variablen

Beitrag von i »

Hallo,

ich habe im Buch nachgelesen und dort heisst es:
DIM PRIVATE VarName as TYPENNAME
Die Variable hat nur im Modul Gültigkeit.
Nun Frage ich mich: Warum ist, wenn ich Main aufrufe in Show_A i=1 (ok das weiß ich ;)). Aber warum ist, wenn ich danach Show_B aufrufe i= 0 und nicht 1 wie es doch im Buch steht und von der Logik her sein sollte?

Code: Alles auswählen

REM  *****  BASIC  *****

PRIVATE i AS INTEGER 'PUBLIC i ist in Show_B auch 0. Als GLOBAL funktioniert - soll es aber nicht sein

Sub Main
	i=1
	CALL Show_A()
End Sub

PRIVATE SUB Show_A()
	MSGBOX CSTR(i) 'i=1
END SUB

PUBLIC SUB Show_B()
	MSGBOX CSTR(i) 'i=0
END SUB
Schlangengift ist Menschengift!
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Gültigkeit von PRIVATE Variablen

Beitrag von hawe »

Vielleicht weil das Buch nur was über die Gültigkeit der Variablen aussagt, aber nix über den Wert den eine Variable hat.
Sowohl SUB Show_A() als auch SUB Show_B() haben Zugriff auf i - i ist für beide ein gültiger/erreichbarer Speicherplatz.
warum die einmal 1 und ein andermal den Wert 0 hat müsstest Du eigentlich wissen - Du hast schließlich den Aufruf veranlasst?
Gruss HW
Win7/SuSe 11.2 - LO 3.3
i
**
Beiträge: 26
Registriert: So, 07.05.2006 23:26

Re: Gültigkeit von PRIVATE Variablen

Beitrag von i »

Ich habe das mit Java od. auch C++ gleich gesetzt. Ich weiß BASIC ist kein Java und das ist sicher auch der Grund...
Denn ich habe versucht Module als Klassen zu verstehen.
So aus dem Gedächtnis (es schon etwas her) ist es in C++ und Java doch so, das hat man einer privaten Variable einen Wert zugewiesen, behält sie diesen auch.
Schlangengift ist Menschengift!
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Gültigkeit von PRIVATE Variablen

Beitrag von hawe »

Ja, aber nur innerhalb der Runtime in der der Wert gesetzt wurde.
Nach meiner Beobachtung initialisieren die Variablen mit jedem Run neu...
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Antworten