Funktions-Interpreter
Informationen
- Kategorien: Kernel | Klassenformeln
- Version: 12.1.0.977
- Veröffentlichungsdatum: Donnerstag, 9. Juli 2009
- Entwickler: Fischer
- Benötigt Datenbankänderung: Nein
- Betreff: Funktions-Interpreter
Beschreibung
Funktionen können über Kommandozeilenparameter und/oder OLE-Automation von externen Programmen mit Parameterübergabe und Abfrage des Rückgabewertes aufgerufen werden.
In Klassenformeln müssen solche Funktionen als "safe" deklariert werden, die Deklaration "safe" ist ähnlich wie "const" ein Merkmal der Funktion.
Z.B. "safe function int DoIt( int $i )"
Der Aufruf über COM hat folgende Syntax
int nResult = CallInterpreter ( byval string strInterpretername, byval string strCode, byref variant varResult, byref strError )
Rückgabe: nResult ist 1 bei Erfolg, sonst 0
Parameter: strInterpretername - der Name des internen Interpreters, muss immer "SAFEFCTCALL" als Wert haben strCode - hier muss der Funktionsaufruf mit den Werten übergeben werden varResult - erhält den Rückgabewert der eigentlichen Funktion, der Datentyp ist abhängig vom Rückgabedatentyp der Funktion (integer, string, double, ...) strError - erhält eine Fehlerbeschreibung, wenn ein Fehler aufgetreten ist
Der Aufruf über Kommandozeile erfolgt nach folgender Syntax: /Interpreter sCode
Für strCode ist im obigen Beispiel DoIt( 5 ) einzusetzen.
Hinweis: Zum Aufruf der COM-Schnittstelle über VBA wird die Schnittstellenbeschreibung benötigt (pitfm.tlb), diese ist unter Dokumente abgelegt.
Bilder
Dokumente
Beispielcode
safe function int Add( int $a, int $b )
{
return $a + $b;
}
Aufruf in Visual Basic 6.0 (via COM):
Dim oPitApp
Set oPitApp = CreateObject("pitfm.application")
Dim nResult
Dim sError As String
Dim bSuccess As Boolean
Dim sCode As String
sCode = "Add( 3, 4 )"
bSuccess= oPitApp.CallInterpreter("SAFEFCTCALL", sCode, nResult, sError)
If (bSuccess = False) Then
MsgBox sError
Else
MsgBox nResult
End If
Aufruf per Kommandozeile (macht hier keinen Sinn, da der Rückgabewert nicht ausgewertet werden kann, nur als Demo):
pitfm.exe /INTERPRETER Add( 3, 4 )