Code in Variable

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Michishirube

Betreff: Code in Variable

BeitragFr, März 13, 2015 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey leute,

sagt mal, ist es möglich, Variableninhalte als Code interpretieren zu lassen?

BSP:

Code: [AUSKLAPPEN]

data$ = "Print "+chr(34)+"Test 2"+chr(34)
Print "Test 1"

Onhit(data$)


Function Onhit(data$)

; Hier soll der Inhalt von data$ als Code ausgeführt werden

End Function



Das Ergebnis soll dann so aussehen.

Test 1
Test 2

Wär cool, wenn ihr mir nen Gedankenanstoss oder gar ne Funktion / Userlib geben könntet.

MfG Michishirube

Spark Fountain

BeitragFr, März 13, 2015 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Willkommen beim BlitzForum! Deine Frage passt besser in den Bereich Beginners-Corner, da es ja gar nichts mit 3D-Funktionen bzw. mit Blitz3D zu tun hat. Nur ein Tipp fürs nächste Mal Wink Vielleicht verschiebt ein lieber Moderator ja deinen Beitrag dorthin.

2. Leider kann man keinen Variableninhalt als Code wiederverwenden. Das liegt daran, dass BlitzBasic (wie auch jede andere Programmiersprache) nicht exakt den von dir geschriebenen Code ausführt, sondern daraus einen maschinenlesbaren Code erzeugt. Diesen Vorgang nennt man Compilieren - das passiert automatisch, wenn du dein Programm ausführen lässt (bzw. wenn du dir mit der Vollversion von BlitzBasic eine .exe-Datei erstellst). Beim Compilieren werden deine Variablennamen durch "Platzhalter" ersetzt (Zahlen) und mithilfe einer Tabelle gespeichert, welcher Platzhalter welchem Variablennamen entspricht. Wenn dein gesamtes Programm abgefrühstückt ist, wird auch die Tabelle nicht mehr benötigt und gelöscht.

Langer Rede kurzer Sinn: Wenn du dein Programm ausführst und willst, dass ein dynamischer (änderbarer) Wert einer Variablen in Code umgewandelt wird, klappt das nicht, weil der von dir geschriebene Code schon gar nicht mehr existiert (und damit auch deine Variable intern anders heißt). Außerdem gibt es grundsätzlich keine Möglichkeit, konkrete "Werte" im Quellcode in Codebefehle umzuwandeln.
Gewinner der MiniBCC's #11, #13 und #28

Eingeproggt

BeitragFr, März 13, 2015 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist nicht so direkt möglich, aber deine Herangehensweise ist mir vertraut... Ich bin auch von "Actionscript" auf BlitzBasic umgestiegen damals - und es war eine große Umstellung Wink

Du kannst zwar gewisse Skript-Interpreter bauen / einbinden (LUA ist da ein gutes Stichwort), aber genau das Verhalten was du wünschst (BB führt BB-Code in Variablen aus, dann noch mit Events usw) geht nicht.

mfG, Christoph

EDIT: Spark war schneller und ausführlicher Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Michishirube

BeitragSa, März 14, 2015 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die schnellen antworten.

es ging mir nicht um nachträglich änderbare inhalte, sondern eher um funktionen, die an jquery angeleht sind Very Happy

BSP

$("#feld").onclick(funktion(){
;was passieren soll
});

aber ich glaube, das kommt dann aufs selbe bei raus Smile

Eingeproggt

BeitragSa, März 14, 2015 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie gesagt, kenne dein Anliegen, funktioniert aber in BB gaaaaanz anders.
Sagt dir prozuderaler Stil etwas? Wieviel hast du mit BB überhaupt schon gemacht?

Kannst du das Beispiel zu MouseHit nachvollziehen?
Wenn MouseHit(1) > 0 ist, dann ist die (linke) Maustaste geklickt. Wo geklickt wurde, kannst du mit x- und y-Koordinaten genauer abfragen. "Elemente" wie in jQuery gibt es nicht wirklich bzw. müsstest du mit eigenen Datenstrukturen (Types) selbst nachbilden.

Kleine "Abschweifung": So gut wie alles, was jQuery "kann" - wenn man es rein auf "klicken", "animieren", "DOM-manipulieren" bezieht - kann BB auch. Allerdings ist die gesamte Funktionsweise ganz anders, sozusagen eine andere Logik. Und ich gebe zu, BB ist um einiges aufwendiger. Bzw. musst du dich um sehr viel selber kümmern was jQuery dir abnimmt. Ich möchte damit keinesfalls sagen, dass man mit BB mal eben so einen JS-kompatiblen Browser schreiben kann. Das wäre ne Lebensaufgabe ^^ Aber ein simples "onclick" kriegt man in BB doch recht einfach hin, wenn man "anders denkt" Wink

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Michishirube

BeitragSa, März 14, 2015 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite schon seit 10 jahren mit Blitz, doch erst jetzt jabe ich sowas wie jquery kennengelernt und wollte so etwas nachbauen.

Zitat:
Sagt dir prozuderaler Stil etwas?


Jetzt auf anhieb nicht.

TimBo

BeitragSo, März 15, 2015 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
erklär mal deinen Anwendungsfall dann können wir dir gezielter helfen.
Aber an sich gibt es da nicht so viele coole Möglichkeiten in Basic.
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
 

Britanny

BeitragDi, März 17, 2015 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo erstmal,

also,.. würde dieses Vorgehen nicht zum Schluss sowas wie ein Interpreter im "Interpreter" sein? Wobei zum Schluss bedeutet, das der Erstere Code kompiliert würde und die daraus entstandene exe eine offene Datei stetig interpretiert eine Art Compiler ist?

Also ich habe sowas früher mal programmiert als es darum ging eine Art Virtueller Arena(Speicher) zu programmieren in dem Programme evolutionieren. Die Idee stammte damals aus einem Wissenschaftsbericht aus Spektrum der Wissenschaft.

lg Britanny

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group