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!
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
Für sowas gibt es andere Konstrukte, die solide sind. Auch in Bascom. ON VALUE, siehe Handbuch.
> 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...
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. ...
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
Vielen Dank für die Antworten, aber ich habe es schon auf einer anderen Weise gelöst.
...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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.