Třída Evaluator
Třída slouží pro vyhodnocování výrazů uložených v řetězcích. Instanci lze získat pouze voláním metody Vario.VytvoritEvaluator(SUdalostiVarioEval). Parametr nastavuje vlastnost FireVarioEvalEvent.
Metody
AddObject(Value) | Metoda pro vložení instance třídy s rozšiřujícími funkcemi pro vyhodnocování výrazů. Funkce musí být veřejné a vracet pouze primitivní typy. |
Evaluate(sExpression, Data) | Vrací hodnotu, která odpovídá vyhodnocení výrazu sExression s hodnotami parametrů uložených v Data. Data může být VBA.Collection, DAO.Recordset, ADODB.Recordset nebo jakýkoliv jiný typ, který má výchozí vlastnost rozhraní s podpisem <název vlastnosti/funkce>(string/variant) as <primitivní typ>/variant |
Vlastnosti
FireVarioEvalEvent | Pokud je nastaveno False (výchozí), proběhne při zavolání metody Evaluate vyhodnocení pouze v dané instanci, pokud je vlastnost nastavena na True, vyvolá se událost Eval na objektu Vario. Když je událost zpracována a označena za vyhodnocenou, použije se jako návratová hodnota výsledek z události. Jinak proběhle zpracování tak jako v prvním případě. |
Příklad 1
Dim c As New Collection
c.Add #8/16/2007#, "Datum"
Dim e As Evaluator
Set e = Vario.VytvoritEvaluator()
Debug.Print e.Evaluate("Format(DateSerial(Year([Datum]) -1,Month([Datum]),Day([Datum])), ""yyyy-mm-dd"")", c)
'vrátí 2006-08-16
Debug.Print e.Evaluate("8 and 15", c)
'vrátí 8
Debug.Print e.Evaluate("null", c)
'vrátí Null
Příklad 2
'Příklad třídy s rozšiřující funkcí
Public Class MojeSuperTrida
Public Function SuperFunkce(ByVal sText As String) As String
Dim i As Long
For i = 1 To Len(sText) Step 2
Mid(sText, i, 1) = UCase(Mid(sText, i, 1))
Next
SuperFunkce = sText
End Function
End Class
'Použití
Dim c As New Collection
c.Add "aaaaaa", "a6"
Dim e As Evaluator
Set e = Vario.VytvoritEvaluator()
e.addObject New MojeSuperTrida
Debug.Print e.Evaluate("SuperFunkce(""abcdefghijklmnop"")", null) 'vrátí AbCdEfGhIjKlMnOp
Debug.Print e.Evaluate("SuperFunkce([a6])", c) 'vrátí AaAaAa