Shared und Protected

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Shared und Protected

Beitrag von CSHW89 »

Hi Leute,
hab grad nur ein kleinen bug gefunden. ist eigentlich auch nicht der rede wert. ich fand ihn halt interressant:

Code: Alles auswählen

Procedure test()
  Shared b.i
  Protected b.s   ; <- wird ignoriert
  b = 10
  b = "Hallo"  ; <- Compilefehler
EndProcedure
Die Zeile mit "b = 'Hallo'" gibt einen Fehler. 'Protected b.s' wird also nicht beachtet. meiner meinung sollte der compiler gar nicht erlauben, dass die gleiche variable erst mit shared und dann mit protected declariert wird.
Zuletzt geändert von CSHW89 am 13.01.2010 18:14, insgesamt 1-mal geändert.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Shared und Protected

Beitrag von Kaeru Gaman »

... beziehungsweise überhaupt ein zweites mal im selben scope definiert wird mit einem anderen Typ...

man sollte noch mal andere kombinationen austesten, und dann kann das ins englische bug-forum.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Shared und Protected

Beitrag von CSHW89 »

Also naja, hab noch zwei weitere Beispiele:

folgenden code würd ich jetzt nicht als bug sehen:

Code: Alles auswählen

Global b.i

Procedure hallo()
  Shared b.i
  b = 3
  Protected b.s
  b = "Hallo"
EndProcedure

b = 2
Is denk ich erwartungsgemäß. Und das folgende Beispiel ist praktisch das gleiche:

Code: Alles auswählen

Procedure hallo()
  Global b.i
  b = 3
  Protected b.s
  b = "Hallo"
EndProcedure

b = 2
Andere kombinationen fägt der compiler ab. aber mein erstes beispiel mit shared und protected ist halt etwas merkwürdig, dass halt eine Zeile komplett ignoriert wird.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Shared und Protected

Beitrag von Kaeru Gaman »

wenn Shared, dann innerhalb Shared und außerhalb Define, nicht Global.
wenn Global, dann nur außerhalb, innerhalb ist automatisch.

das erste ist alles Andere als erwartungsgemäß, das müßte auf jeden Fall angemeckert werden.

die Korrekte Fehlermeldung sieht so aus:

Code: Alles auswählen

Define b.i
Define b.s
---------------------------
PureBasic
---------------------------
Line 3: Variable already declared with another type: b.
---------------------------
OK
---------------------------
auch dieses müßte einen Fehler produzieren:

Code: Alles auswählen

Procedure hallo()
  Shared b.i
  b = 3
  Protected b.i
  b = 2
EndProcedure
denn die selbe Variable kann nicht Shared und Protected sein, schon garnicht nacheinander.

wenn das ginge, müßte sie

Code: Alles auswählen

  Shared Protected b.i
definiert werden, um eine Variable die unter Procedures ge-shared wird von einer Globalen zu trennen.
aber PureBasic Shared immer automatisch auch mit dem Hauptprogramm.

Code: Alles auswählen

Define b.i
Procedure hallo()
  Shared b.i
  Debug b
EndProcedure
b = 4711
hallo()
das ist nicht in jeder Sprache so, bei manchen wäre die einfach definierte im Hauptprogramm von den Shared in den Proceduren getrennt,
sie müßte auch im Hauptprogramm als Shared definiert werden, um die selbe zu sein.

also, da muss man mal ne vernünftige Bugmeldung draus machen.

... ich kann jetzt nicht, sonst verhunger ich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten