Deutsch
Bugs und vermeintliche

Bug beim &-Operator in Arrays

 

Sebastian
Sprenger
Wenn man einem Array einen neuen Wert zuweist und innerhalb der eckigen Klammern ein binäres Und (&-Operator) steht, wird dieses als logisches Und interpretiert (d.h. es wird nur in Element 0 oder 1 geschrieben).
Das tritt wiederum nur in der Runtime auf, nicht aber im Interpreter.

(Getestet unter XProfan 9 und OGLBasic 1.0.
Ich weiß nicht, ob der Fehler schon bekannt ist oder in XProfan 11 auch noch auftritt...)
KompilierenMarkierenSeparieren
declare a%[3]
a%[0]=16
a%[1]=17
a%[2]=18
a%[3]=19
cls
print "2 & 2        ->",2 & 2
print
print "a%[2 & 2]    = ",2 & 2
Diese Zeile sollte eigentlich in a%[2] schreiben,
schreibt in der Runtime aber tatsächlich in a%[1]:
a%[2 & 2]=2 & 2
print
print "a%[0]        ->",a%[0]
print "a%[1]        ->",a%[1]
print "a%[2]        ->",a%[2]
print "a%[3]        ->",a%[3]
print
Das Lesen funktioniert hingegen immer richtig:
print "a%[2 & 2]    ->",a%[2 & 2]
waitinput
Gruß, Sebastian
 
Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32
Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM
Windows Me, 1.8 Ghz, 256 MB RAM
02.08.2008  
 




Jörg
Sellmeyer
Das kommt bei mir raus:

Ok - ich war vorschnell. Im Kompilat auch falsch

10 kB
Hochgeladen:02.08.2008
Ladeanzahl251
Herunterladen
9 kB
Hochgeladen:02.08.2008
Ladeanzahl248
Herunterladen
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.08.2008  
 




RGH
Ok, ich weiß zwar noch nicht woran es liegt, aber ich weiß einen Workaround: Klammern!

a%[(2 & 2)] = 2 & 2

funktioniert interpretiert und kompiliert, So wie es aussieht war dieses seltsame Verhalten wohl seit der Einführung der Arrays und Operatoren schon so. Da es jetzt erst auffiel. scheint diese Konstruktion (binäre Operatoren im Arrayindex bei der Zuweisung) wohl eher selten vorkommen.

Ich hoffe es in der nächsten Version zu beheben.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.08.2008  
 




Michael
Dell
Will Dich nicht erschrecken Roland aber das funktioniert auch nicht.

Bleibt nur der Umweg über ne Variable.

var zw% = 2 & 2
a%[zw%] = 2 & 2
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
03.08.2008  
 




Sebastian
Sprenger
RGH
seit der Einführung der Arrays und Operatoren schon so.

Nicht ganz, in Profan² 7.0e läuft alles korrekt.
Michael Dell
Bleibt nur der Umweg über ne Variable

...oder über die @And-Funktion (mit oder ohne PROFALT.INC).
Ich glaube auch, es kommt wirklich nur auf das &-Zeichen direkt innerhalb des   an. Hier ein gefälliges Beispiel:
KompilierenMarkierenSeparieren
declare a%[2]
def mbox(0) messagebox(str$(2 & 2),"",0)
mbox()
messagebox(str$(2 & 2),"",0)
a%[mbox()]=0
a%[messagebox(str$(2 & 2),"",0)]=0
Bei den ersten drei MessageBoxes kommt bei mir 2, und bei der letzten 1.
Gruß, Sebastian
 
Profan² 7.0e, XProfan 9, 11.2a, FreeProfan32
Windows Vista Home Premium 32-Bit, 2.8 Ghz, 4 GB RAM
Windows Me, 1.8 Ghz, 256 MB RAM
03.08.2008  
 




RGH
Hallo,
auch dieser Bug wird in XProfan 11.1 behoben sein!

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
11.11.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.953 Betrachtungen

Unbenanntvor 0 min.
Michael W.26.03.2016
Sebastian Sprenger19.03.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie