Seite 2 von 4

Verfasst: 28.06.2006 08:47
von horst
@DarkDragon
> Das klingt irgendwie so als ob es nur für die Kommunikation zwischen Prozeduren gedacht ist

Naja, eine Prozedur kann sich logischerweise auch selbst (immer wieder) an der Benutzung dieser Variablen beteiligen, ob sie nun woanders verändert wird oder nicht. ("shared" haben wir auch genommen, als es noch kein "static" gab.)

@Kaeru Gaman
> da muss ich jetzt aber mal auf die boardsuche hinweisen

Hinweis auf Boardsuche ist gut. Link ist besser :wink:

Andererseits, wenn es in der PB-Hilfe eine zusammenfassende Übersicht der verschiedenen Nutzungsbereiche (global, shared, static, protected, parameter, default/lokal) mit präzisen Aussagen gäbe, dann würde sich viel Fragerei erübrigen.

Verfasst: 28.06.2006 08:59
von Falko
Wie meinst du das in der Hilfe mit präzisen Aussagen?
http://www.purearea.net/pb/german/manua ... rence.html
Unter Prozeduren Unterstützung ist das doch vorhanden und auch
erklärt.
Prozeduren Unterstützung

Global
...
Protected
Shared
Static
Wenn das noch unverständlich ist, sollte Andrè darüber informiert werden
was er in der neuen Hilfe zu PB4 ändern bzw. anpassen sollte, damit
es verstanden wird. 8)

MfG Falko

Verfasst: 28.06.2006 12:00
von AND51
Hallo und danke für eure zahlreichen Beiträge.

Ich habe die Boardsuche benutzt aber zu "unterschied global shared" nichts gefunden.
Falko hat geschrieben:Fehlt nur noch der Vergleich zu Protected .
Aber eigendlich steht das alles ja schön in der PB-Hilfe beschrieben drinne, so das man hätte vorher gucken können
Protected? Das weiß ich, was das ist *augenzwinker*
Aber meinst du, ich habe nicht in der Hilfe nachgeschaut, was Shared bewirkt?
Ich werde aus diesem Satz einfach nicht schlau:
PureBasic Hilfe hat geschrieben:Shared erlaubt den Zugriff auf eine Variable innerhalb der Prozedur.
Wenn ich also eine Variable share, dann hat shared laut horst die gleiche Wirkung wie Global. Denn eine globalisierte Vairable ist ja auch in allen Proceduren und
horst hat geschrieben:und zusätzlich im Hauptprogramm
verfügbar.

@ horst: Danke für dienen Beitrag. Ist wirklich gut erklärt, aber ich weiß, das "to share" "teilen" heißt :-)

@ Kaeru, wie gesagt, ich habe die Suche benutzt, aber nichts gefunden.

@ Falko's letzter Beitrag:
Wie gesagt, ich werde aus dem Satz "Shared erlaubt den Zugriff auf eine Variable innerhalb der Prozedur." nicht schlau, ich streite auch nicht ab, das ich evtl. ein Brett vor dem Kopf habe, obowhl ich glaube, keines zu haben.

Verfasst: 28.06.2006 13:13
von Kaeru Gaman
hm.. der begriff "unterschied" war wohl zu viel...

http://www.purebasic.fr/german/viewtopic.php?t=8298

Verfasst: 28.06.2006 13:20
von jear
Hier wurde es dikutiert.

Der Knackpunkt ist der, dass das Hauptprogramm ohne das Schlüsselwort Shared auf eine unter gleichem Namen aber mit Shared in Prozeduren vereinbarte Variable zugreift.
Der Sanitesse halber sollte auch im Hauptprogramm die Verwendung von Shared erforderlich sein, wenn man die gleiche Variable teilen will.

Verfasst: 28.06.2006 14:26
von horst
@AND51
> PureBasic Hilfe hat folgendes geschrieben:
> Shared erlaubt den Zugriff auf eine Variable innerhalb der Prozedur.

Dieser Satz in der Hilfe ist nicht besonders glücklich formuliert.

> .. Wenn ich also eine Variable share, dann hat shared laut horst die gleiche Wirkung wie Global.

.. für jede Prozedur, die ausdrücklich (per "Shared"-Erklärung) an der Benutzung der Variablen beteiligt ist, und (stillschweigend) für das Hauptprogramm; für alle anderen Prozeduren natürlich nicht.

> ...aber ich weiß, das "to share" "teilen" heißt ..

Und zwar nicht im Sinne von "aufteilen" sondern von "gemeinsam haben"..

Verfasst: 28.06.2006 14:30
von AND51
Kaeru Gaman hat geschrieben:hm.. der begriff "unterschied" war wohl zu viel...
Ich bin halt ein direkter Typ :lol: Ich will's imemr ganz genau haben. Ist entweder traurig oder -was ich natürlich denke- zufall, dass auf den 4 Seiten voller Posts nicht ein einz'ges Mal das Wort "unterschied" vorkommt, sodass ich es nicht finden konnte :|

@ horst: Ja auch das weiß ich, das ist meinersets ein bisschen unglücklich ausgedrückt. Aber du siehst, diesen ungllücklich formulierten Satz versteht man nicht immer so ganz, ne? :cry:

Verfasst: 28.06.2006 16:53
von DarkDragon
AND51 hat geschrieben:Wenn ich also eine Variable share, dann hat shared laut horst die gleiche Wirkung wie Global. Denn eine globalisierte Vairable ist ja auch in allen Proceduren und
horst hat geschrieben:und zusätzlich im Hauptprogramm
verfügbar.
Eben nicht! Shared ist nicht für alle Prozeduren, sondern nur die, die eine Variable innerhalb der Prozedur als Shared deklariert haben sowie für das Hauptprogramm.

Verfasst: 28.06.2006 20:24
von AND51

Code: Alles auswählen

xyz.l=5
Procedure a()
   Shared xyz.l
EndProcedure

Procedure b()
   Shared xyz.l
EndProcedure

Procedure c()
   Shared xyz.s
EndProcedure

Procedure d()

EndProcedure
Also hier ist xyz.l, nur im Hauptprogramm, a() und b() verfügbar, gelle?

Ich hoffe, wenn ihr das mit JA beantwortet, habe ichs endlich verstanden *schwitz*

Verfasst: 28.06.2006 20:29
von #NULL
solange du in der procedure c das shared nicht in protected änderst (oder weg lässt), erhältst du einen compiler error, weil der bezeichner "xyz" schon für eine variable anderen typs vergeben ist.