Italia
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]
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
Downloadcounter251
Download
9 kB
Hochgeladen:02.08.2008
Downloadcounter248
Download
 
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.

Saluto
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 circa 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 corre alles korrekt.
Michael Dell
Bleibt nur der Umweg circa ne Variable

...oder circa 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.
Saluto, 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
Ciao,
auch dieser Bug wird in XProfan 11.1 behoben sein!

Saluto
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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

7.920 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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