String als Code?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

String als Code?

Beitrag 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?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: String als Code?

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: String als Code?

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

Re: String als Code?

Beitrag 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...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: String als Code?

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: String als Code?

Beitrag von CSHW89 »

... oder, wenns um komplizierteren Code geht: http://www.purebasic.fr/german/viewtopi ... 11&t=21646

lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Little Progger
Beiträge: 43
Registriert: 21.04.2010 10:05
Computerausstattung: 2,8 gHz Dual core
Geforce 9800GT Green Edition
500GB SATA
Wohnort: Daheim
Kontaktdaten:

Re: String als Code?

Beitrag von Little Progger »

okay, danke Leute! Werde mich die nächsten Tag da mal einarbeiten!
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: String als Code?

Beitrag 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
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: String als Code?

Beitrag 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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: String als Code?

Beitrag 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ö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Antworten