Forum: Mikrocontroller und Digitale Elektronik Bascom - Auslesen von Variablen -> Zu diesen Inhalt springen


von Elias S. (computergarf)


Lesenswert?

Ich benutze Bascom seit einiger Zeit, aber ich habe trotzdem mal eine 
Frage.
Ich habe eine Variable und möchte aber nicht zu diesen Label springen 
sondern zu diesen welches in der Variable steht.

Dim Test As String * 1
Test = "A"
Goto Test

Ich möchte dabei nicht zu dem Label Test sondern zu A.
Kann mir da einer helfen?
Vielen Dank im Voraus!

von Oliver S. (oliverso)


Lesenswert?

Es gibt Programmkonstrukte, die sind seit Anbeginn der Zeitrechnung 
dafür bekannt, Unheil und Verderben zu bringen. "Calculated gotos" 
gehören dazu. Allerdings weiß ich gar nicht, ob Basic bzw. Bascom das 
kennt. Hoffentlich nicht.

Lesbarer wäre sowas in der Art:
if Test="A" then goto A
if Test="B" then goto B

UNd richtig gut wird es, wenn du das auch noch ohne goto hinbekommst.

Syntaxfehler bitte selber korrigieren, ich 'habe gar kein Bascom...

Oliver

von Falk B. (falk)


Lesenswert?

Für sowas gibt es andere Konstrukte, die solide sind. Auch in Bascom.

ON VALUE, siehe Handbuch.

von ich (Gast)


Lesenswert?

> Ich benutze Bascom seit einiger Zeit, aber ich habe trotzdem mal
> eine Frage.
> Ich habe eine Variable und möchte aber nicht zu diesen Label springen
> sondern zu diesen welches in der Variable steht.
Welches Label? Eine Variable und ein Label sind zwei grundverschiedene 
Sachen. Eine Variable ist einfach gesagt ein Speicherort, der Daten 
aufnemen kann. Ein Label kennzeichnet nur die Adresse einer bestimmten 
Programm- oder Datenstelle und versieht sie mit einem Namen (eben einem 
Label).

> Dim Test As String * 1
> Test = "A"
> Goto Test
Das wird nicht funktionieren, weil du kein Label festgelegt hast.
Dein "Test" ist hier eine Variable.
Und "A" ist ein ASCII-Zeichen, welches in einer Stringvariablen steht.
Anspringen kannst du aber nur eine Stelle im Programm. Ein ASCII-Zeichen 
ist ja nicht ausführbar.

> Ich möchte dabei nicht zu dem Label Test sondern zu A.
> Kann mir da einer helfen?
> Vielen Dank im Voraus!

Kann aber auch sein, ich stehe auf dem Schlauch und du meinst was ganz 
anderes...

von Hannes L. (hannes)


Lesenswert?

Oliver S. schrieb:
> dafür bekannt, Unheil und Verderben zu bringen. "Calculated gotos"
> gehören dazu.

Sowas hat der AVR sogar im ASM-Befehlssatz (ijmp, icall). Ob und wie 
Bascom das umsetzt, hat Falk ja bereits genannt.

...

von Oliver S. (oliverso)


Lesenswert?

Hannes Lux schrieb:
> Sowas hat der AVR sogar im ASM-Befehlssatz (ijmp, icall).

Na ja, jeder anständige Prozessor hat sowas in der Art in seinem 
Befehlssatz, und noch viel mehr davon. Und weil das so ist, haben schon 
die allerersten Programmierer der Menschheitsgeschichte angefangen, 
Hochsprachen zu entwickeln, um von solchen Kontruktionen verschont zu 
bleiben.

Oliver

von Elias S. (computergarf)


Lesenswert?

Vielen Dank für die Antworten, aber ich habe es schon auf einer anderen 
Weise gelöst.

von ich (Gast)


Lesenswert?

...und wie? Das würde andere auch mal interessieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.