Bascom - ein Fehler der Zeit gekostet hat

OP (Firma: Manfred) #2747611
Lesenswert?

Hi,

Bascom ist ja recht simpel in der Anwendung, allerdings hat mich 
folgender Vertippser sehr viel Zeit gekostet:
1
$regfile = "m16def.dat"
2
Dim Byt As Byte
3
Byt = 1
4
Dim Ramcodes(10) As Byte
5
Const Ccperiodetag = 2
6
Ramcodes(3) = 47
7
Byt = Ramcodes(byt + Ccperiodetage)
8
Print B

Das lässt sich problemlos kompilieren -
nur leider erkennt Bascom den Tippfehler nicht
(cperiodetage statt cperiodetag) und zwar nur in der Konstellation mit 
dem byt-Offset)

Absicht oder Bug?
Version: 2.0.7.3.001 Vollversion
Gast #2747623
Lesenswert?

Naja, hier sitzt der Bug vor dem Monitor.
Wenn du Zeit sparen wolltest, warum beschäftigst du dich dann mit dem 
Lernen einer Programmiersprache?
Keine Stackwerte, kein End und beim compilieren gibt es eine 
Fehlermeldung, die kein compilieren zuläßt.
Warum müssen Anfänger immer unbedingt verschachtelte Rechnungen 
ausführen?
Berechne den Arrayzeiger extra und du wirst sehen, daß es geht.
Auch Bascom verlangt mitdenken.
OP (Firma: Manfred) #2747625
Lesenswert?

Oh Weh schrieb:
> Naja, hier sitzt der Bug vor dem Monitor.
> Wenn du Zeit sparen wolltest, warum beschäftigst du dich dann mit dem
> Lernen einer Programmiersprache?
> Keine Stackwerte, kein End und beim compilieren gibt es eine
> Fehlermeldung, die kein compilieren zuläßt.
Oh Weh, hast du nicht einmal mitbekommen, dass das Listing auf den 
Fehler reduziert wurde, die 40kb-Binärcode vom Originalprogramm auf 
Atmega644 wollte ich nicht posten ;-)

> Warum müssen Anfänger immer unbedingt verschachtelte Rechnungen
> ausführen?
Wo steht was von Anfänger?

> Berechne den Arrayzeiger extra und du wirst sehen, daß es geht.
Bascom kann das auch in den Klammern!
OP (Firma: Manfred) #2747654
Lesenswert?

Umpa Lumpa schrieb:
> Weil Bascom nicht deklarierte Variablen zulässt, die auf 0 setzt und
> damit munter weiterrechnet. In anderen Programmiersprachen gibt es
> zumindest eine Warnung.
>
Hallo,
das stimmt so nicht, Bascom prüft eigentlich auf nicht deklarierte 
Variablen, nur in dem speziellen Fall nicht -deshalb vermute ich ja den 
Bug
1
$regfile = "m16def.dat"
2
Dim Byt As Byte
3
Byt = 1
4
Dim Ramcodes(10) As Byte
5
Const Ccperiodetag = 2
6
Ramcodes(3) = 47
7
Byt = Ramcodes(byt + Ccperiodetage)
8
Print Ccperiodetage
9
Print Byt
Jetzt schreit der Compiler sehr wohl bei der Zeile
Print Ccperiodetage

nur in der Zeile
Byt = Ramcodes(byt + Ccperiodetage) erkennt er den Fehler nicht.
Gast #2747755
Lesenswert?

Manfred S. schrieb:
> Umpa Lumpa schrieb:
>> Weil Bascom nicht deklarierte Variablen zulässt, die auf 0 setzt und
>> damit munter weiterrechnet. In anderen Programmiersprachen gibt es
>> zumindest eine Warnung.
>>
> Hallo,
> das stimmt so nicht, Bascom prüft eigentlich auf nicht deklarierte
> Variablen, nur in dem speziellen Fall nicht -deshalb vermute ich ja den
> Bug

Stimmt, Variablen müssen deklariert werden, andernfalls bricht der 
Compiler mit einer Fehlermeldung ab. Ich bin mir allerdings nicht sicher 
(und habe das Tutorial auch gerade nicht zur Hand), ob der Variablenname 
nicht nur bis zu einer bestimmten Länge "geparsed" wird...

MfG
Heribert
OP (Firma: Manfred) #2747781
Lesenswert?

So, der Fall ist geklärt.
Es war wirklich ein Bug.

Hier die Antwort von Mark Alberts aus dem MCS-Supportforum:

"yes this is a bug, the constant is evaluated to a 0. original you could 
not use an offset in an array. later i added an option to add a 
constant, and after that also the option to use a variable.
there is probably a test missing."

und weiter:

"of course it is changed in the next update."

Also super Support und etwaige Fehler werden auch gleich korrigiert!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren