Seite 1 von 1

String als Code?

Verfasst: 24.01.2013 18:53
von Little Progger
Tagchen Euch allen!
Meine Frage ist eigentlich recht simpel, aber ich hab dafür noch keine Lösung gefunden.
Und zwar: Kann man eine Variable, die ein String ist, anhand irgendeines Befehls oder so als Quellcode lesen lassen?
Wenn ja, wie?

Re: String als Code?

Verfasst: 24.01.2013 19:08
von NicTheQuick
Und was soll dann mit dem Code passieren? Soll er ausgeführt werden? Das geht nicht nativ in PB. Dazu brauchst du einen Interpreter für PB-Code oder müsstest den Code in dem String erst einmal von PB kompilieren und das Ergebnis wieder ausführen lassen.

Re: String als Code?

Verfasst: 24.01.2013 19:17
von ts-soft
@Little Progger
Wenn Du so etwas suchst, wie es z.B. der XProfan Interpreter kann, das wird in PureBasic nicht gehen, das geht
nur mit interpretierten Sprachen, PB benötigt einen Compiler um die native Exe zu erzeugen.

Re: String als Code?

Verfasst: 24.01.2013 19:20
von Little Progger
Ja, ich hoffte man könnte diesen String dann quasi einfach ausführen. Was ich damit vorhabe ist folgendes: Ich will, dass man irgendwo eine Funktion eingibt, zB. "x+25/x^2" oder so, und diese dann auch als Funktion im Programm gewertet wird, sodass ich zB. einen Graphen zeichnen lassen kann.
Aber dann muss ich mir wohl was anderes ausdenken...

Re: String als Code?

Verfasst: 24.01.2013 19:34
von ts-soft
Also suchst Du eine Eval-Funktion. Jetzt hast Du schon mal den passenden Suchbegriff und hier noch
ein passender link: http://www.purebasic.fr/german/viewtopi ... =8&t=17186

Re: String als Code?

Verfasst: 24.01.2013 19:36
von CSHW89
... oder, wenns um komplizierteren Code geht: http://www.purebasic.fr/german/viewtopi ... 11&t=21646

lg Kevin

Re: String als Code?

Verfasst: 24.01.2013 20:00
von Little Progger
okay, danke Leute! Werde mich die nächsten Tag da mal einarbeiten!

Re: String als Code?

Verfasst: 24.01.2013 20:43
von Danilo
Little Progger hat geschrieben:zB. "x+25/x^2"

Code: Alles auswählen

; http://forums.purebasic.com/german/viewtopic.php?f=8&t=24256

XIncludeFile "Evaluate.pbi" ; http://danilo.purearea.net/EvaluateExpression.zip

Define i

For i = 1 To 5
    EvaluateVariables("x") = Str(i)
    Debug Evaluate("x+25/x^2")
Next

Re: String als Code?

Verfasst: 24.01.2013 20:56
von STARGÅTE
Oder ganz dreist mit SQL:

Code: Alles auswählen

Enumeration
	#Database
EndEnumeration

Procedure.f Rechne(String.s, X.f=0)
	Protected Result.s
	If DatabaseQuery(#Database, ReplaceString("SELECT ("+String+")", "x", StrF(X)))
		If NextDatabaseRow(#Database)
			Result = GetDatabaseString(#Database, 0)
		EndIf
		FinishDatabaseQuery(#Database)
	EndIf
	ProcedureReturn ValF(Result)
EndProcedure  

UseSQLiteDatabase()
OpenDatabase(#Database, ":memory:", "", "", #PB_Database_SQLite)

Debug Rechne("1 + 2 * 3")
Debug Rechne("x+18/(x*x)", 3)
Debug Rechne("374*4+7*(83+99)-3*128")

CloseDatabase(#Database)

Re: String als Code?

Verfasst: 24.01.2013 21:41
von WPö
Moin!

Übrigens, ganz nebenbei erwähnt, LittleProgger: Wenn der Nutzer irgendwie Einfluß auf diese Zeichenkette nehmen kann, reißt Du u.U. ein Sicherheitsleck auf. Parsen mußt Du die Zeichenkette sowieso, da kannste dann auch ein paar Sicherheitsabfragen mit einbauen (wie Division durch Null, Dateioperationen). Ich weiß, ist sehr vage formuliert. Wir wissen aber auch nicht genau, was Du wie von wem einsetzen willst.

Gruß - WPö