BUG: XOr-Operation zerstört Werte von Protected-Variablen !

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Es gibt keine boolsche Algebra in PB. Wenns geht ist es Zufall. Nur im
zusammenhang mit If macht es Sinn.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Wenns geht ist es schön. Sollte man aber testen.

Es ist wenn man C weg lässt jedoch immer noch ein Problem mit der Variable B in der Procedure wenn die Variable nicht vorher deklariert worden ist.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

Procedure Test()
  Protected b.l
  b = 4711
  Static a.b = 0
  Debug b
  Debug a
  b - 4000
  a + 1
  Debug b
  Debug a
EndProcedure
Test()
Ich sehe kein Problem!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Guten Morgen :mrgreen:

Code: Alles auswählen

;Global a,b

a = #False
b = #True
;------------------
Debug "A=" + Str(a)
Debug "B=" + Str(b)

If a XOr b
  Debug "True"
EndIf

Debug "A=" + Str(a)
Debug "B=" + Str(b) + " <- Ok"
;------------------

Procedure test()

Debug "In Procedure"
If a XOr b
  Debug "True"
EndIf

Debug "A=" + Str(a)
Debug "B=" + Str(b) + " <- Bug wenn nicht 'Global a,b'"

EndProcedure

;------------------

test() 
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Warum nicht gleich so :mrgreen:
b wird verändert, nicht gut!

Dies:

Code: Alles auswählen

Procedure test()
  Protected a.l, b.l
  If a XOr b
    Debug "True"
  EndIf

  Debug "A=" + Str(a)
  Debug "B=" + Str(b) + " <- Bug"

EndProcedure

test()
hätte für die Demonstration gereicht, je weniger um so einfach zu erkennen, das drumrum irritiert nur
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

ts-soft hat geschrieben:je weniger um so einfach zu erkennen, das drumrum irritiert nur
Da hast Du ein wahres Wort gelassen ausgesprochen. :)
Weil ich dachte dass das schon als Bug anerkannt ist, hatte ich mich gar nicht weiter bemüht, den "Kern" der Sache herauszuarbeiten. Danke an die beiden *-soft Profis, dass Ihr es gemacht habt.
Ich werde dann 'mal dieses letzte, sehr überzeugende Beispiel ins engl. Forum posten (falls nicht schon geschehen).

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Little John

Beitrag von Little John »

Danke.

Ein weiterer Fehler ist ja üprigenz, :)
dass auf dem Debug-Bildschirm das
Wort "True" erscheint, die XOR-Operation
also auch falsch ausgewertet wird.

Gruß, Little John
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Little John
Denn darfst Du melden, hab keine Zeit und Lust mehr :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten