50
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

FM2014: Einführung in Function Scripting by Thomas Hirt

Embed Size (px)

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.zip

Citation preview

Page 1: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 2: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 3: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

Einleitung

Page 4: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 5: FM2014: Einführung in Function Scripting by Thomas Hirt

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

}

Page 6: FM2014: Einführung in Function Scripting by Thomas Hirt

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

}

Page 7: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

FileMaker Custom Functions

Page 8: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

FileMaker Script

Page 9: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

einen Parameter an ein FileMaker Script übergeben

Page 10: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

einen Parameter in einem FileMaker Script auslesen

Page 11: FM2014: Einführung in Function Scripting by Thomas Hirt

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]

Page 12: FM2014: Einführung in Function Scripting by Thomas Hirt

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.

Page 13: FM2014: Einführung in Function Scripting by Thomas Hirt

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.

Page 14: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische Parameterauswertung

Page 15: FM2014: Einführung in Function Scripting by Thomas Hirt

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!

Page 16: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 17: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische Parameterauswertung 1

Demo

Page 18: FM2014: Einführung in Function Scripting by Thomas Hirt

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 ) ]

Page 19: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 20: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische Parameterauswertung 2

Demo

Page 21: FM2014: Einführung in Function Scripting by Thomas Hirt

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"]

Page 22: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 23: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische Parameterauswertung 3

Demo

Page 24: FM2014: Einführung in Function Scripting by Thomas Hirt

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"]

Page 25: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 26: FM2014: Einführung in Function Scripting by Thomas Hirt

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 ) ]

Page 27: FM2014: Einführung in Function Scripting by Thomas Hirt

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 )

Page 28: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische ParameterauswertungUmgehung der Limitierung - Variante 1

Demo

Page 29: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 30: FM2014: Einführung in Function Scripting by Thomas Hirt

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 ) ]

Page 31: FM2014: Einführung in Function Scripting by Thomas Hirt

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 )

Page 32: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

statische ParameterauswertungUmgehung der Limitierung - Variante 2

Demo

Page 33: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

dynamische Parameterauswertung

Page 34: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 35: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 36: FM2014: Einführung in Function Scripting by Thomas Hirt

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 )

Page 37: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 38: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

dynamische Parameterauswertung 1fixe Parameterreihenfolge

Demo

Page 39: FM2014: Einführung in Function Scripting by Thomas Hirt

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 !

Page 40: FM2014: Einführung in Function Scripting by Thomas Hirt

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.

Page 41: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

RÜCKBLENDE

dynamische Parameterauswertung 1fixe Parameterreihenfolge

Page 42: FM2014: Einführung in Function Scripting by Thomas Hirt

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"

Page 43: FM2014: Einführung in Function Scripting by Thomas Hirt

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

)" )

Page 44: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 45: FM2014: Einführung in Function Scripting by Thomas Hirt

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 )

Page 46: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 47: FM2014: Einführung in Function Scripting by Thomas Hirt

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"

Page 48: FM2014: Einführung in Function Scripting by Thomas Hirt

Thomas Hirt

Einführung in Function Scripting

FileMaker Konferenz 2014 Winterthur

www.filemaker-konferenz.com

dynamische Parameterauswertung 2

Demo

Page 49: FM2014: Einführung in Function Scripting by Thomas Hirt

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

Page 50: FM2014: Einführung in Function Scripting by Thomas Hirt

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