fm2014: einführung in function scripting by thomas hirt
DESCRIPTION
FileMaker Skripten akzeptieren nur einen einzigen Parameter, den man innerhalb des Skriptes mit der Funktion 'Get(ScriptParameter)' auslesen kann. Seit der Einführung des Skript-Parameters in FileMaker 7 haben Entwickler nach Wegen gesucht, die Beschränkung auf einen einzigen Parameter zu umgehen. In den meisten Programmiersprachen akzeptieren Funktionen eine beliebige Anzahl von Parametern. Wenn man einen Weg findet, in den einzigen Parameter eines FileMaker Skriptes mehrere Parameter zu verpacken, kombiniert man das Konzept des "FileMaker Skriptes" mit dem Konzept der "Funktion". Aus dieser Verbindung ist in der englischsprachigen FileMaker-Community der Begriff "Function Scripting" entstanden. Dieser Vortrag gibt einen Überblick über einige Vorgehensweisen, wie man mehrere Parameter an ein Skript übergeben kann. Wir beginnen mit einfacheren Methoden, die auch für Entwickler mit wenig Erfahrung geeignet sind, und tasten uns danach an fortgeschrittene Techniken heran. Fortgeschrittene Techniken bedeuten mehr Aufwand und Komplexität, bieten aber mehr Kontrolle. Download Beispieldateien: http://www.filemaker-konferenz.com/2014/downloads/Hirt_Thomas/Function_Scriptung_und_Custom_Functions.zipTRANSCRIPT
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Einführung in Function Scripting
Übergabe mehrerer Parameter an ein Script
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Was erwartet Sie?
• allgemein
• ein sehr technischer Vortrag
• eine Zusammenstellung an spezifischem Methodikwissen
• je nach Vorwissen eine steile oder weniger steile Lernkurve
• nichts Neues für erfahrene, professionelle FileMaker Entwickler
• inhaltlich
• Wir beginnen mit Grundlagen.
• Wir schreiten danach mit Siebenmeilenstiefeln voran.
• viele Details eher für's Studium nach der Konferenz vorgesehen
• 3 Themenblöcke
• Einführung
• statische Parameterauswertung
• dynamische Parameterauswertung
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Einleitung
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Was ist eine Funktion?
• Eine Funktion ist eine Abfolge
von Anweisungen.
• Eine Funktion akzeptiert
Eingabewerte ("Parameter").
• Eine Funktion verarbeitet die
Parameter und errechnet damit
oder daraus einen Rückgabewert.
• Eine Funktion wird einmal
deklariert und ausprogrammiert
und kann danach beliebig oft
aufgerufen werden.Rückgabewert
Param3
Param2Param1
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Funktionen in stark typisierten Programmiersprachen
• Funktionsnamen
• Anweisungen
• Parameternamen
• Datentypen der Parameter
• Datentyp des Rückgabewertes
Name
Anweisung 1
Anweisung 2
…
Datentyp
ParamTyp 1
ParamTyp 2
ParamTyp 3
…
ParamName 1
ParamName 2
ParamName 3
…
Beispiel:
boolean inviteGuests ( Array namen; Coordinates ort; Date datum )
{
// der Funktionscode
}
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Funktionen in schwach typisierten Programmiersprachen
• Funktionsnamen
• Parameternamen
• Anweisungen
Name
Anweisung 1
Anweisung 2
Anweisung 3
…
ParameterName 1
ParameterName 2
ParameterName 3
…
Beispiel:
inviteGuests ( namen; ort; datum )
{
// der Funktionscode
}
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
FileMaker Custom Functions
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
FileMaker Script
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
einen Parameter an ein FileMaker Script übergeben
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
einen Parameter in einem FileMaker Script auslesen
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
einen Parameter in einem FileMaker Script nutzen und den Rückgabewert berechnen
Set Variable [$parameter; Value:Get ( ScriptParameter )]
Set Variable [$returnValue; Value: Berechnungen mit $parameter ]
Exit Script [Result: $returnValue]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
FileMaker Script Parameterwie vom Hersteller vorgesehen
• Ursprünglich konnte kein Parameter an ein FileMaker Skript übergeben werden. Dies war nicht vorgesehen.
• Seit FileMaker 7 akzeptiert ein FileMaker Skript von Haus aus einen einzelnen Parameter.
• Der Parameter wird über ein Formelfeld festgelegt.
• Im Skript muss der Parameter über Get ( ScriptParameter ) ausgelesen werden und wird typischerweise in einer lokalen Variable abgelegt.
• Es gibt innerhalb von FileMaker keine Mechanismen, um an ein Skript mehr als einen Parameter zu übergeben.
• ACHTUNG…
• Bitte FileMaker Skripten und FileMaker Custom Functions nicht verwechseln!
• Custom Functions akzeptieren eine frei definierbare Anzahl von Parametern.
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
"Function Scripting"
Wenn in FileMaker Skripten Methoden eingesetzt werden, welche es
erlauben, einem FileMaker Skript mehr als eine Parameter zu übergeben,
wird dies als "Function Scripting" bezeichnet.
Der Begriff "Function Scripting" lässt sich so erklären, dass ein FileMaker
Skript sich durch diese Methoden beinahe wie eine vollwertige Funktion
verhält und nicht nur wie ein einfaches, parameterloses Skript.
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungWie werden die Konzepte demonstriert?
• Jedes Konzept wird anhand eines eigenen FileMaker Skriptes
vorgestellt.
• Ein Demoskript erhält (anders als in der alltäglichen Praxis) keinen
sprechenden, funktionsbezogenen Namen, sondern einen Namen, der
sich auf das erklärte Konzept bezieht.
• "statisch1 ( param )"
=> Skript 1. Konzept, Kapitel "statische Parameterzuweisung"
• "statisch4 ( artikelliste; adresse )"
=> Skript 4. Konzept, Kapitel "statische Parameterzuweisung"
• "dynamisch2 ( params )"
=> Skript 2. Konzept, Kapitel "dynamische Parameterzuweisung"
• Damit die übergebenen Parameter sowie deren Erkennung innerhalb der
Skripte in den Demos gut sichtbar gezeigt werden können, werden
globale Felder eingesetzt. Dies erfolgt NUR zu Demozwecken!
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungWie werden die Konzepte demonstriert?
↕ # Script Parameter auslesen
↕ Set Variable [$parameter; Value:Get ( ScriptParameter )]
↕ #
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::STATISCH.1.OUTPUT1; $parameter]
Script Name: statisch1 ( param )
Perform Script ["statisch1 ( param)"; Parameter: Hilfsfelder::STATISCH.1.INPUT]
Skriptaufruf
nur zu Demozwecken!
Globale Felder, Globale und lokale Variablen, Literale sowie Berechnungen möglich
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 1
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 2
Script Name: statisch2 ( zeit; nachricht )
16:30¶Hallo, wie geht's?
Set Variable [$params; Value:Get ( ScriptParameter )]
Set Variable [$zeit; Value:GetValue ( $params; 1 ) ]Set Variable [$nachricht; Value:GetValue ( $params; 2 ) ]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 2
↕ # Script Parameter auslesen
↕ Set Variable [$params; Value:Get ( ScriptParameter )]
↕ #
↕ # Script Parameter aufteilen und in lokalen Variablen speichern
↕ Set Variable [$zeit; Value:GetAsTime ( GetValue ( $params; 1 ) )]
↕ Set Variable [$nachricht; Value:GetValue ( $params; 2 )]
↕ #
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::STATISCH.2.OUTPUT1; $zeit]
↕ Set Field [Hilfsfelder::STATISCH.2.OUTPUT2; $nachricht]
Script Name: statisch2 ( zeit; nachricht )explizite Typzuweisung
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 2
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungLimitierung
Als "Delimiter" wird jenes Zeichen oder jene Zeichenkombination
bezeichnet, welche die Parameter voneinander abtrennt.
Im Deutschen kann auch der Begriff "Trennzeichen" verwendet werden.
Der Delimiter darf in den Parametern nicht vorkommen!
• PerformScript [ "statisch2 ( zeit; nachricht )"; Parameter:
"16:30¶Diese Nachricht hat zwei Zeilen,¶welche durch eine Absatzmarke
getrennt sind.]
• PerformScript [ "statisch3 ( sender|msg )"; Parameter:
"param1|param2"]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 3
Script Name: statisch3 ( sender|msg)
↕ # Script Parameter auslesen
↕ Set Variable [$params; Value:Get ( ScriptParameter )]
↕ # Script Parameter aufteilen und in lokalen Variablen
speichern
↕ Set Variable [$positionPipeChar; Value:
Position ( $params; "|"; 1; 1 )]
↕ Set Variable [$sender; Value:
Left ( $params; $positionPipeChar - 1 )]
↕ Set Variable [$msg; Value:Right ( $params;
Length ( $params ) - $positionPipeChar ]
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::STATISCH.2.OUTPUT1; $sender]
↕ Set Field [Hilfsfelder::STATISCH.2.OUTPUT2; $msg]
Script Parameter "en bloc" auslesen
Parameterblock in einzelne Parameter aufteilen
Parameterwerte an lokale Variablen zuordnen
mit lokalen Variablen arbeiten
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische Parameterauswertung 3
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungLimitierung
Als "Delimiter" wird jenes Zeichen oder jene Zeichenkombination
bezeichnet, welche die Parameter voneinander abtrennt.
Der Delimiter darf in den Parametern nicht vorkommen!
• PerformScript [ "statisch2 ( zeit; nachricht )"; Parameter:
"16:30¶Diese Nachricht hat zwei Zeilen,¶welche durch eine Absatzmarke
getrennt sind.]
• PerformScript [ "statisch3 ( sender|msg )"; Parameter:
"param1|param2|enthält eine Pipe"]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Umgehung der Limitierung – Variante 1Delimiter "codieren"
• verbotene Delimiter-Zeichen
werden vor Parameterübergabe
durch eine erlaubte
Zeichenkombination ersetzt
• verbotenen Delimiter-Zeichen
werden während Zuweisung der
Parameterwerte an lokale
Variablen wieder eingefügt
• 2 Custom Functions
• codierung Delimiter
• decodierung Delimiter
1. param1="Hallo¶Velo!"
param2=1234
2. param1="Hallo###par###Velo!"
param2=1234
3. paramblock="Hallo###par###
Velo!¶1234"
4. var1="Hallo###par### Velo!"
var2="1234"
5. var1="Hallo¶Velo!"
var2=1234
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Umgehung der Limitierung – Variante 1Delimiter "codieren"
• Custom Function 1: Parameter codieren
paramEncode ( Param ) =
Substitute ( param; "¶"; "###paragraph###" ) & "¶"
• Custom Function 2: Parameter decodieren
paramDecode ( Param ) =
Substitute ( param; "###paragraph###"; "¶" )
• Script: statisch4 ( artikelliste; adresse )
• Scriptaufruf:
PerformScript [ "statisch4 ( artikelliste; adresse)";
Parameter: paramEncode ( Hilfsfelder::STATISCH.4.PARAM1
) & paramEncode ( Hilfsfelder::STATISCH.4.PARAM2 ) ]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungUmgehung der Limitierung - Variante 1
↕ # Script Parameter auslesen und sichtbar machen
↕ Set Variable [$params; Value:Get ( ScriptParameter )]
↕ Set Field [Hilfsfelder::STATISCH.4.PARAMBLOCK; $params]
↕ # Script Parameter aufteilen und in lokalen Variablen speichern
↕ Set Variable [$artikelliste; Value:
paramDecode ( GetValue ( $params; 1 ) )]
↕ Set Variable [$adresse; Value: paramDecode ( GetValue ( $params; 2 ) )]
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::STATISCH.4.OUTPUT1; $artikelliste]
↕ Set Field [Hilfsfelder::STATISCH.4.OUTPUT2; $adresse]
Script Name: statisch4 ( artikelliste; adresse )
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungUmgehung der Limitierung - Variante 1
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Umgehung der Limitierung – Variante 2komplexer Delimiter
• jeder Parameter wird durch eine
komplexe Zeichenfolge umfasst
• "umhüllte" Parameter werden als
Parameterblock übergeben
• Parameter werden aus ihrer
Umhüllung wieder
herausgeschält
• 2 Custom Functions
• umhüllen der Parameter mit
komplexemn Delimiter
• herausschälen der einzelnen
Parameter aus dem
"Parameterblock"
1. param1="Hey!¶Du!"
param2=1234
2. param1="##1##Hey!¶Du!##2##"
param2="##1##1234##2##"
3. paramblock="##1##Hey!¶Du!##
2####1##1234##2##"
4. var1="##1##Hey!¶Du!##2##"
var2="##1##1234##2##"
5. var1="Hey!¶Du!"
var2=1234
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungUmgehung der Limitierung - Variante 2
• Custom Function 1: Parameterwert mit Delimiter umfassen
param ( value ) = "###start###" & value & "###end###"
• Custom Function 2: Parameterwert aus Parameterblock zurückgewinnen
getParam ( params; nr ) =
Let ([
_start = Position ( params; "###start###"; 1; nr ) + 11;
_end = Position ( params; "###end###"; 1; nr ) - 1;
_length = _end - _start + 1
];
Middle ( params; _start; _length )
)
• Script: statisch5 ( artikelliste; adresse )
• Scriptaufruf:
PerformScript [ "statisch5 ( artikelliste; adresse)";
Parameter: param ( Hilfsfelder::STATISCH.5.PARAM1 ) & param (
Hilfsfelder::STATISCH.5.PARAM2 ) ]
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungUmgehung der Limitierung - Variante 2
↕ # Script Parameter auslesen und sichtbar machen
↕ Set Variable [$params; Value:Get ( ScriptParameter )]
↕ Set Field [Hilfsfelder::STATISCH.5.PARAMBLOCK; $params]
↕ # Script Parameter aufteilen und in lokalen Variablen speichern
↕ Set Variable [$artikelliste; Value: getParam ( $params; 1 )]
↕ Set Variable [$adresse; Value: getParam ( $params; 2 )]
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::STATISCH.5.OUTPUT1; $artikelliste]
↕ Set Field [Hilfsfelder::STATISCH.5.OUTPUT2; $adresse]
Script Name: statisch5 ( artikelliste; adresse )
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
statische ParameterauswertungUmgehung der Limitierung - Variante 2
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung
• Ziele
• automatische Zuordnung von Parametern zu lokalen Variablen
• standardisierter Weg, Parameter einer Funktion zu deklarieren
• Übertragung der Technik von einem FileMaker Script in ein anderes
muss leicht und schnell gehen
• copy – paste
• Custom Functions
• mögliche Erweiterungen
• Reihenfolge der Parameter bei der Übergabe unwichtig
• optionale Parameter vs. Pflichtparameter
• Typprüfungen
• komplexe Validierungen
• umfassendes Error Handling
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 1fixe Parameterreihenfolge
↕ Set Variable [$auswertung; Value:
attributeParams (
getParamsFromScriptname () ; Get ( ScriptParameter )
)
]
Script Name: dynamisch1 ( artikelliste; adresse )
$artikelliste $adresse
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 1fixe Parameterreihenfolge
↕ # Script Parameter sichtbar machen (unnötig! nur Demo!)
↕ Set Field [Hilfsfelder::DYNAMISCH.1.PARAMBLOCK; Get ( ScriptParameter )]
↕ # Script Parameter auswerten
↕ Set Variable [$auswertung; Value: attributeParams ( getParamsFromScriptname () ; Get ( ScriptParameter ) )]
↕ # mit lokalen Variablen weiterarbeiten
↕ Set Field [Hilfsfelder::DYNAMISCH.1.OUTPUT1; $artikelliste]
↕ Set Field [Hilfsfelder::DYNAMISCH.1.OUTPUT2; $adresse]
Aufruf des Skriptes dynamisch1 ( artikelliste; adresse )
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 1fixe Parameterreihenfolge
PerformScript [
"dynamisch1 ( artikelliste; adresse)";
Parameter: param ( value1 ) & param ( value2 )
]
Aufruf des Skriptes "dynamisch1 ( artikelliste; adresse )"
• Tabelle::Feldname
• $lokaleVariable
• $$GLOBALE.VARIABLE
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 1fixe Parameterreihenfolge
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
An die Funktion "Evaluate ()" wird ein Text übergeben, welcher danach von
"Evaluate ()" als Berechnung ausgewertet wird. Dies erlaubt die
Zusammenstellung von Berechnungen zur Laufzeit des Skriptes.
dynamische Parameterauswertungdas zentrale "Geheimnis"
Das zentrale "Geheimnis" der dynamischen Parameterauswertung liegt in
der FileMaker Funktion Evaluate !
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertungdas zentrale "Geheimnis"
• Let (
[
$$myGlobalVar1="Hello";
$$myGlobalVar2="World"
];
1
)
• Evaluate ( "
Let (
[
$$" & $var1 & "=" & $value1 & ";
$$" & $var2 & "=" & Quote ( $value2 ) & "
];
1
)
" )
Zahlenwerte
Texte, usw.
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
RÜCKBLENDE
dynamische Parameterauswertung 1fixe Parameterreihenfolge
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
attributeParams ( getParamsFromScriptname(); Get ( ScriptParameter ) )
START
Namen der erwarteten Parameter aus
Skriptname herleiten
ersten Parameternamen aus Liste aller Parameter herleiten
ersten Parameterwert aus Parameterblock herleiten
Gibt es verbleibende Parameter?
verbleibende Parameterwerte herleiten
verbleibende Parameternamen herleiten
Variablenzuordnung basierend auf erstem Parameternamen
und -wert vornehmen
ENDE
nein
ja
verbleibende Parameternamen und verbleibender
Parameterblock als neue Ausgangswerte festlegen
"Rekursion"
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 1fixe Parameterreihenfolge
_attribution = Evaluate ( " Let (
[
$" & _currentName & "=" & Quote ( _currentValue ) & "
];
True
)" )
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 2freie Parameterreihenfolge mit Typangabe
• Da Skriptnamen in FileMaker 13 (und älter) auf 100 Zeichen begrenzt
sind, können nur wenige und kurze Parameternamen direkt im
Skriptnamen definiert werden.
• Bei einer undefinierten Parameterreihenfolge mit Typangabe definieren
wir die erwarteten Parameter INNERHALB des Skriptes in einer klar
definierten Art.
• Parameter werden als eine Abfolge von Wertepaaren übergeben.
• Die Wertepaare bestehen aus Parameternamen und Parameterwert
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 2
↕ # Script Parameter definieren
↕ SetVariable [$erwarteteParameter;
Value:"artikelnummer;number¶artikelbeschreibung;text¶anzahl;number
¶stueckpreis;number¶bestelldatum;date"]
↕ # Script Parameter auswerten
↕ Set Variable [$auswertung; Value:dyn2.params.calculate (
$erwarteteParameter ; Get ( ScriptParameter ) )]
↕ # mit lokalen Variablen weiterarbeiten
↕ …
Script Name: dynamisch2 ( params )
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
verbleibende Parameternamen und verbleibender
Parameterblock als neue Ausgangswerte festlegen
START
Datentyp des ersten Parameters bestimmen
Name-Wert-Paar desersten Parameters auslesen
Gibt es weitere Name-Wert-
Paare?
verbleibenden Parameterblock berechnen
ENDE
nein
ja"Rekursion"
lokale Variable erzeugen aus Name-Wert-Paar mit
Datentyp
dynamische Parameterauswertung 2
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
START
Datentyp des ersten Parameters bestimmen
lokale Variable aus Name-Wert-Paar erzeugen
dynamische Parameterauswertung 2
ENDE
dyn2.params.calculate ( expectedParams; params )
dyn2.type.determine( name; expectedParams )
dyn2.param.attribute( nameValuePair; type )
"Rekursion"
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
dynamische Parameterauswertung 2
Demo
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
ein guter Fachartikel zum selben Thema
• "Scriptparameter - Alte und neue Wege", Arnold Kegebein, FileMaker
Magazin, 3, 2014, pp.31-34
• gut, ziemlich umfassend, empfehlenswert
• Verweise auf http://filemakerstandards.org
• extensive Sammlung von Konventionen zur FileMaker
Programmierung
• diverse bekannte "FileMaker Gurus" arbeiten daran mit
Thomas Hirt
Einführung in Function Scripting
FileMaker Konferenz 2014 Winterthur
www.filemaker-konferenz.com
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages