Jag lyckas inte använda Eval-funktionen i Visual Basic utan bara i VBA. Det är underligt. Ska man inte kunna använda den i visual basic? Jag vill evaluera ett uttryck och returnera ehuruvida det är sannt eller falskt.
Eval Function i Visual Basic
5 svar · 213 visningar · startad av grindelid
Eval är en VBScript funktion som introducerades i VBScript 5.0.
Den finns alltå inte som default i VB.
Du kan ju annars använda funktionen IIF, som evaluerar och returnerar ett förutbestämtvärde utifrån resultatet.
Ex.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Dim strA As String
Dim strB As String
Dim blnRet As Boolean
blnRet = IIf(strA = strB, True, False)
MsgBox blnRet
Här kollas alltså om "strA" är lika med "strB" (vilket det är) och då returneras "True", annars "False".
------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/
Det blir en smula omständigt då jag har ett okänt antal variabler med olika ej förutbestämda, logiska operatorer emellan.
Jag har löst det genom att skicka det som en sql-fråga efter som att SQL har stöd för logiken.
Exempelvis: SELECT True | (False & True) AS Result
Det fungerar bra men kännas som tokigt eftersom att jag måste skicka en fråga till en databas som jag egentligen inte skulle behöva använda.
Ok, men varför inte göra en egen funktion?
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
private function blnEval(vntVal1, vntVal2) as boolean
blnEval = iif(vntVal1 = vntVal2, true, false)
end function
Det känns väldigt onödigt att behöva använda en databas...
------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/
Njah. Det skulle ju vara bra om det gick enkelt.
Det jag ska göra är att skriva en regeltolk. En funktion som returnerar sant eller falskt om en viss (användarifylld) regel uppfylls. Ex: <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">order_no AND (datum OR agent_no)
Regeln ska bestämma vilka fält som måste vara ifyllda i ett formulär och detta skulle ju inte varit så ångestladdat om jag kunnat använda eval().
Daniel Grindelid
Om du bygger en applikation (alltså ingen komponent) så kan du använda Microsoft Script Control för att köra kod, den har bla. en "Eval" funktion.
Du hittar den under:
Project - Components - Microsoft Script Control
Ett enkelt exempel är:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Dim strModName As String
strModName = "ModBase"
scr.Modules.Add strModName
scr.Modules(strModName).AddCode "intA = 10"
scr.Modules(strModName).AddCode "intB = 15"
MsgBox scr.Modules(strModName).Eval("intA = intB")
Du lägger alltså först till kod som du sedan evaluerar.
Detta borde du kunna använda! Jag är dock inte riktigt med på vad du menar med att användaren ska skriva in kommandon...
-----------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/
[Redigerat av fredrik den 04 jan 2002]