Globaler Zugriff auf eine deklarierte Variable, wie?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
stab
Beiträge: 96
Registriert: 24.02.2006 16:09
Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Wohnort: Hardt
Kontaktdaten:

Globaler Zugriff auf eine deklarierte Variable, wie?

Beitrag von stab »

Hallo, kurze Frage:

Code: Alles auswählen

Structure MeineStruktur
  vname.s
  nname.s
EndStructure

Define.MeineStruktur Privat
Define.MeineStruktur Dienst

Privat\vname = "Jupp"
Privat\nname = "Schäfer"

Dienst\vname = "Bill"
Dienst\nname = "Gates"

Debug Privat\vname + " " + Privat\nname

Procedure Dienst()
  Shared Dienst.MeineStruktur
  Debug Dienst\vname + " " + Dienst\nname
EndProcedure

Dienst()
Wie erhalte ich globalen Zugriff auf obige Variablen?
Bisher muss ich den Zugriff innerhalb einer Prozedur durch Shared erlauben.

Vereinfacht in diesem Code:

Code: Alles auswählen

Define vname$
vname$ = "Jupp"

Debug vname$

Procedure vn()
  ;Shared vname$
  Debug vname$
EndProcedure

vn()
Danke!
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."

Wer lügt hier wirklich und wer sagt die Wahrheit?

_________________________________________

286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Globaler Zugriff auf eine deklarierte Variable, wie?

Beitrag von Nino »

Statt „Define“ muss du dazu „Global“ benutzen.
Ist aber nur in Ausnahmefällen empfehlenswert, weil dadurch der Aufwand für die Pflege des Programms steigt.
Benutzeravatar
stab
Beiträge: 96
Registriert: 24.02.2006 16:09
Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Wohnort: Hardt
Kontaktdaten:

Re: Globaler Zugriff auf eine deklarierte Variable, wie?

Beitrag von stab »

Stimmt, so gehts. Danke
Ich dachte, die Strukturen müssten mit Define deklariert werden.

Code: Alles auswählen

Structure MeineStruktur
  vname.s
  nname.s
EndStructure

Global.MeineStruktur Privat
Global.MeineStruktur Dienst

Privat\vname = "Jupp"
Privat\nname = "Schäfer"

Dienst\vname = "Bill"
Dienst\nname = "Gates"

Debug Privat\vname + " " + Privat\nname

Procedure Dienst()
  ;Shared Dienst.MeineStruktur
  Debug Dienst\vname + " " + Dienst\nname
EndProcedure

Dienst()

Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."

Wer lügt hier wirklich und wer sagt die Wahrheit?

_________________________________________

286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Antworten