48
FileMaker Konferenz 2012 Salzburg www.filemaker-konferenz.com Dipl.-Ing. Arnold Kegebein Custom Functions / Eigene Funktionen Eigene Funktionen / Custom Functions Von den Grundlagen zu fortgeschrittenen Programmiertechniken

FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Embed Size (px)

DESCRIPTION

Von den Grundlagen zu fortgeschrittenen Programmiertechniken. Ein Vortrag im Rahmen der FileMaker Konferenz 2012 in Salzburg.

Citation preview

Page 1: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Eigene Funktionen / Custom Functions

Von den Grundlagen zufortgeschrittenen Programmiertechniken

Page 2: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

• Diplom-Ingenieur der Technischen Informatik

• 6½ Jahre in den USA als IT Manager

• Seit 2006 Entwicklung mit FileMaker

• 25 Jahre Datenbankerfahrungen: Access, Oracle, MySQL, u. a.

• Hohe Aufmerksamkeit auf Usability und Design

• Regelmäßiger Autor im FileMaker Magazin

Zu meiner Person

Page 3: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Theoretische Betrachtungen

Page 4: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Eigene Funktionen• Was ist eine Funktion?

„Eine vordefinierte, benannte Formel, die eine spezielle Berechnung durchführt und einen eindeutigen einzelnen Wert liefert.“ (FileMaker Pro 11, Hilfe, Glossar)

• Wieso »Eigene« Funktion?

Es gibt drei verschiedene Gruppen von Funktionen:

‣ FileMaker Funktionen sind im Programm direkt eingebaut

‣ Externe Funktionen als Schnittstelle zu Plugins

‣ Eigene Funktionen vom Entwickler frei programmiert

Page 5: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Eigene FunktionenEine Eigene Funktion …

• ist eine gespeicherte Formel

• hat keinen, einen oder mehrere Eingabewerte (Parameter)

• gibt genau einen Wert zurück

• wird wie eine normale FileMaker Funktion verwendet

• ist nur im verwendeten Modul bekannt

• kann zwischen Modulen kopiert werden

• kann in FileMaker Pro aufgerufen, aber nur mit FileMaker Pro Advanced erstellt und modifiziert werden

• kann im Zugriff beschränkt sein (Anwenderrechte)

Page 6: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Aufbau einer Funktion

• Funktionsname

• Funktionsparameter

• Funktionscode

• Funktionsergebnis

NullWert( Wert; Null )Wenn( IstLeer( Wert );! Null;// Sonst! Wert)

Page 7: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionsname • Der Name muss eindeutig sein

• Darf nicht länger als 100 Zeichen sein

• Darf bestimmte Zeichen nicht enthalten: + - * / ^ & = ≠ < > ≤ ≥ ( , ; ) [ ] " :: $ }

• Darf Leerzeichen enthalten

• Darf nicht mit einer Ziffer, Punkt oder Leerzeichen beginnen

• Darf nicht UND, ODER, XODER, NICHT enthalten

• Darf nicht den gleichen Namen wie eine Funktion, ein Parameter der aktuellen Funktion oder ein Schlüsselwort sein

• Vorsicht bei mehrsprachigen Arbeitsumgebungen

Page 8: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionsparameter• Es muss kein Parameter angegeben werden

• Der Parametername unterliegt den gleichen Beschränkungen wie der Funktionsname

• Die Reihenfolge der Parameter hat Bedeutung

• Es gibt keine optionalen Parameter, d. h. definierte Parameter müssen im Funktionsaufruf berücksichtigt werden

• Die Parameter müssen im Funktionscode nicht vorkommen

Page 9: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionscode und Rückgabewert• Es ist keine Programmiersprache.

• Der Code besteht aus einer einzigen Formel.

• Das Ergebnis der Formel ist der Rückgabewert der Funktion.

Page 10: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Dialoge

Page 11: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Dialog: Funktionen verwalten• Aufruf: Ablage > Verwalten > Eigene Funktionen…

Funktionen aus anderenModulen importieren

Page 12: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Dialog: Funktionen importieren• Aufruf: Ablage > Verwalten > Eigene Funktionen… > Importieren

Page 13: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionen importieren• Es werden nur Funktionen importiert, keine Bezugsobjekte, etc.

• FileMaker überwacht und „korrigiert“ Funktionen beim Import

• Es wird eine Importzusammenfassung und Protokoll erzeugt

• Gleichheit im Funktionsnamen wird durch einen Zähler ausgeglichen

• Verweise auf andere EigeneFunktionen werden zuerst aufdie gleichzeitig importiertenFunktionen angewand, sonstauf schon existierende CFs

• Bei fehlenden Verweisen wird der gesamte Code in einen Kommentar umgewandelt

Page 14: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Dialog: Funktionen bearbeiten

Parameter hinzufügen

Parameter umbenennen

Parameter löschen

Page 15: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Programmierung von Eigenen Funktionen

Page 16: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Übersicht Programmierung• Kommentare

• Operatoren

• Funktionsumfang

• Variablen und deren Gültigkeitsbereiche (Scope)

• Spezielle Funktion: SetzeVars

• Fortgeschrittene Programmiertechniken‣ Funktionskapselung‣ Optionale Parameter‣ Mehrere Rückgabewerte

• Komplexe Funktionsstrukturen‣ Rekursion‣ Schleifen‣ Wechselseitiger Funktionsaufruf

Page 17: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Kommentare• Zeilenkommentare

‣ Vom // bis zum Zeilenende

• Blockkommentare

‣ Vom /* bis zum entsprechenden */

‣ Kann sich über mehrere Zeilen erstrecken

‣ Blockkommentare können verschachtelt werden

• Auswertungspriotität von Zeilen- und Blockkommentaren ist abhängig von der Verarbeitungsreihenfolge

Hole( LetzteFehlerNr ) = 109 // Berechtigung fehlt

Auswahl( x; "" /* Null */; 100; 250; 333; 500; 750 )

Page 18: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Operatoren• Alle bekannten Operatoren aus FileMaker

Standarddialogen können verwendet werden

• Rechenoperatoren: + - * / ^

• Textoperatoren: " " & ¶

• Klammern: ( )

• Vergleichsoperatoren: = ≠ > < ≥ ≤

• Logische Operatoren: UND ODER XODER NICHT

Page 19: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionsumfang• Fast alle internen FileMaker Funktionen

‣ Ausnahme: Selbst

‣ Landesspezifische Sprache und immer Englisch

• Alle Externen Funktionen (von Plug-ins)

• Alle Eigenen Funktionen

‣ Einschließlich sich selbst (Rekursion)

• Alle Tabellenfelder, die im Modul definiert bzw. referenziert sind

‣ Keine Eingabehilfe für die Feldauswahl im Dialog

‣ Wenn Bezüge bei Funktionsaufruf nicht bestehen, dann gibt die Funktion einen Fehler zurück.

Page 20: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

SetzeVars• SetzeVars erlaubt die Zusammenfassung mehrerer Ausdrücke

‣ Um wiederholte Berechnungen zu vermeiden

‣ Um Ausdrücke übersichtlicher zu strukturieren

• Mit SetzeVars können Variablen definiert werden

‣ Globale Variablen

‣ Lokale Variablen

‣ Einfache Variablen

Page 21: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

SetzeVars

• SetzeVars erlaubt die Deklaration von einer oder mehreren Variablen

• SetzeVars erwartet einen Ausdruck, dessen Ergebnis der Rückgabewert der Funktion ist

SetzeVars( [! $$GLOBAL = "globale Variable";! $Lokal = "lokale Variable";! _Einfach = "einfache Variable"];! "Heute ist der "! & Hole( SystemDatum ))

Variablendeklarationen

Ausdruck mit Rückgabewert

Page 22: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

SetzeVars Beispiel

• Wiederholte Berechnung

• Optimierung möglich für schneller Berechnung und geringere Speicherauslastung

Wenn( HoleNtenDatensatz( Test::Ergebnis; $X ) < 1,0 ODER HoleNtenDatensatz( Test::Ergebnis; $X ) > 1,8);! "Ergebnis ausserhalb Testbereich")

SetzeVars( [! Ergebnis = HoleNtenDatensatz( Test::Ergebnis; $X )];! Wenn( Ergebnis < 1,0 ODER Ergebnis > 1,8);! ! "Ergebnis ausserhalb Testbereich"! ))

Page 23: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Variablen

Page 24: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Globale und lokale Variablen• Globale Variable: $$Variable

• Lokale Variable: $Variable

• Variablen müssen nicht definiert werden

• Variablen werden durch Wertzuweisung bekannt gemacht

• Durch Zuweisung von "" wird die Variable wieder entfernt

• Variablen können Wiederholungen haben

‣ Anzahl der Wiederholungen müssen nicht definiert werden

• Variablen können direkt in der Datenanzeige überwacht und auch verändert werden

‣ Lokale Variablen nur während der Laufzeit eines Scripts

Page 25: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Einfache Variablen• Werden in SetzeVars definiert

• Müssen definiert werden, bevor sie verwendet werden

• Können keine Wiederholungen haben

• Können nur per Überwachung in der Datenanzeige dargestellt, aber nicht verändert werden

Page 26: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Gültigkeitsbereich von VariablenModul A

Script 1

Script 1-1

Script 1-2

Script 2

Script 2-1

Modul B

Script 3

$$X = "global"

Globale Variablen

• Im gesamten Modul bekannt, in dem sie definiert werden

• Können überall im Modul geändert werden; neuer Wert ist im gesamten Modul sichtbar

• Unbekannt in anderen Modulen

$$X = "global"

$$X = "global"

$$X = "global"

$$X = "global"

Page 27: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Gültigkeitsbereich von VariablenModul A

Script 1

Script 1-1

Script 1-2

Script 2

Script 2-1

Modul B

Script 3

$X = "lokal"

Lokale Variablen

• Nur in dem Script bekannt, in dem sie definiert werden

• Untergeordnete Scripts können eine Variable mit dem gleichen Namen definieren, ohne dadurch den Wert der anderen Variable zu verändern

Page 28: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Script 1

Gültigkeitsbereich von Variablen Einfache Variablen

• Werden in der Funktion SetzeVars erstellt

• Sind nur im gleichen oder untergeordneten SetzeVars-Konstrukten bekannt

• Untergeordnete SetzeVars-Konstrukte können zeit-weilig den Wert ändern, aber der ursprüngliche Wert wird beim Verlassen wieder hergestellt

SetzeVars

SetzeVars

SetzeVars

SetzeVars

_X = "einfach"

_X = "temp"

Page 29: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FortgeschritteneProgrammiertechniken

Page 30: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionskapselung• Aufgaben einer Funktionskapselung:

‣ Vereinfachung des Funktionsaufrufs

‣ Funktionssicherheit

• Vergleichbar mit einer Black Box

‣ Eingabewerte und Ausgabewerte sind kontrollierbar

‣ Änderungen in der Black Box dringen nicht nach außen

• Empfohlen für Externe Funktionen (Plug-ins)

‣ Wechsel des Plug-ins erfordert anderen Funktionsaufruf

‣ Neue Plug-in Version verändert die erforderlichen Parameter

‣ Standardaufruf erfordert nur wenige Parameter

Page 31: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Funktionskapselung

DoSQL Plug-in • mFMb_DoSQL( sqlString {; executeOnIdle } ) • mFMb_DoSQL_SetColumnSeparator( unicodeNumber ) • mFMb_DoSQL_SetRowSeparator( unicodeNumber )

FMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } )

FileMaker Pro 12 • ExecuteSQL( sqlQuery; fieldSeparator; rowSeparator {; arguments ... } )

SQL( query )! qFMSQL_ExecuteSQL( query )

SQL( query )! qFMSQL_ExecuteSQL( query )

SQL( query )! mFMb_DoSQL( query )

SQL( query )! ExecuteSQL( query; "{Tab}"; ¶ )

Page 32: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

FunktionskapselungFMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } )

SQL( query )! qFMSQL_ExecuteSQL( query )

SQL( query )Let( [! _result = qFMSQL_ExecuteSQL( query );! _error = Position( _result; "Query ERROR:"; 1; 1 ) > 0;! $$SQL.ERROR.MSG = If( _error; _result );! $$SQL.ERROR.NO = Left( _result; 7 );! $$SQL.ERROR.QUERY = If( _error; query; "" )];! If( _error; "?"; _result ))

Page 33: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Optionale Parameter• Optionale Parameter müssen nicht angegeben werden

• Wenn nicht angegeben, wird intern ein Vorgabewert verwendet

• Vorteile von optionalen Parametern:

‣ Vereinfachung (kürzerer Aufruf im Standardfall)

‣ Fehlerverringerung (weniger Angaben = weniger Fehler)

‣ Flexiblere Funktionen, da vielseitiger nutzbar

• FileMaker interne Funktionen und Externe Funktionen kennen optionale Parameter, Eigene Funktionen leider nicht

FensterNamen( {Dateiname} )Wenn( Bedingung; ErgebnisWennWahr {; ErgebnisWennFalsch} )Liste( Feld {; Feld...} )Austauschen( Text; [Suche1; Ersatz1] {; [Suche2; Ersatz2]; ...} )SetzeVars( {[} Var1 = Term1 {; Var2 = Term2... ]}; Rechenanweisung )

Page 34: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Optionale Paramter bei Eigenen Funktionen• Reguläre Parameter

‣ Bei Standardaufruf wird ein Leertext übergeben

• Option Parameter

‣ Ein Text übernimmt beliebig viele zusammensetzte Optionen

• Lokale oder globale Variablen

Alpha( Notwendig; {Optional} )Aufruf: Alpha( "Lorem ipsum"; _ )

Beta( Notwendig; {Optionen} )Aufruf: Beta( 475/12; "Einheit=€ Genauigkeit=2" )

Gamma( Notwendig )Aufruf: SetzeVars( $Gamma.Option = "xyz"; _ ) & Gamma( “LiLaLu” )

Page 35: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Mehrere Rückgabewerte• Lokale oder globale Variablen

• Geeignete Namen wählen: z. B. $CFName.Ergebnis

• Variablen können auch Wiederholungen haben$$CF.Name[1], $$CF.Name[2], …

• Variablen sollten immer in der Funktion initialisiert werden

Page 36: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Rekursionen

Page 37: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Rekursion• Rekursion bedeutet, die Funktion ruft sich selbst auf

• Direkter oder indirekt Aufruf (Funktion A ruft Funktion B auf, die wiederum Funktion A aufruft)

• Eine Abbruchbedingung ist erforderlich, um die Rekursion abzubrechen

• FileMaker: max. insgesamt 50.000 rekursive Aufrufe max. 10.000 Aufrufe in einem Call Stack

• Rekursionen potenzieren die Möglichkeiten von Funktionen

‣ Programm- und Zahlschleifen

‣ Listen- und Kettenverarbeitungen

‣ Komplexe „Programmierungen“ innerhalb einer Funktion

Page 38: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel RekursionAufgabe: Ein Text soll beliebig oft wiederholt werdenName: WiederholenParameter: Text (Text) Der zu wiederholende Text Anzahl (Zahl) Anzahl der WiederholungenRückgabe: (Text) Der wiederholte Text

Rekursion: Text ausgebenAbbruch: Nach der n-ten Wiederholung → Schleifenzähler → Initialisierung, Inkrementierung, ÜberprüfungInitialisierung: Autom. beim Funktionsaufruf (Parameterübergabe)Inkrement: Beim rekursiven Funktionsaufruf: Anzahl - 1Überprüfung: Anzahl < 1

Page 39: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel RekursionWiederholen( Text; Anzahl )

• Text ist ein gültiger Variablenname

• Anzahl ist in einer deutscher Arbeitssumgebung nicht erlaubt

• In einer englischen Umgebung kann dagegen Anzahl als Parametername verwendet werden

‣ Beim Wechsel in eine deutsche Umgebung arbeitet die Eigene Funktion weiterhin korrekt

‣ Sie kann dann aber nicht mehr leicht geändert werden

• Empfehlung: Parameter und einfache Variablen sollten daher in einer Funktion immer mit einem Unterstrich beginnen

Page 40: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel RekursionWiederholen( _Text; _Anzahl )

_Text & Wiederholen( _Text; _Anzahl - 1 )

• Statt einer Abbruchbedingung kann man auch eine Rekursionsbedingung schreiben

Wiederholen( _Text; _Anzahl )Wenn( _Anzahl ) < 1;! // Abbruch der Rekursion// Sonst! _Text & Wiederholen( _Text; _Anzahl - 1 ))

Wiederholen( _Text; _Anzahl )Wenn( _Anzahl ≥ 1;! _Text & Wiederholen( _Text; _Anzahl - 1 ))

Kein Abbruch

Abbruchbedingung

Rekursionsbedingung

Page 41: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Endrekursion / Tail Recursion• FileMaker ist Endrekursion-optimiert

• Endrekursionen erhöhen nicht den Aufrufstapel (call stack)

• Endrekursiv bedeutet, der rekursive Funktionsaufruf ist die letzte Aktion zur Berechnung des Funktionswertes

Page 42: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel Endrekursion SumN( n )

Wenn( n = 0;!0; n + SumN( n - 1 ) )

SumN(3) !SumN(3) = 3 + SumN(2)! SumN(2) = 2 + SumN(1)! ! SumN(1) = 1 + SumN(0)! ! ! SumN(0) = 0! ! SumN(1) = 1 + 0 = 1! SumN(2) = 2 + 1 = 3SumN(3) = 3 + 3 = 6

Keine Endrekursion

Page 43: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel Endrekursion SumN( n )

AddSumN( 0; n )

SumN(3) !SumN(3) = AddSumN( 0; 3 ) = AddSumN( 3; 2 ) = AddSumN( 5; 1 ) = AddSumN( 6; 0 ) = 6

AddSumN( m; n )Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) )

Page 44: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Praxisbeispiele

Page 45: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Beispiel Summenfunktion SumN( n )

AddSumN( 0; n )

SumN( n )( n * ( n + 1 ) ) / 2

AddSumN( m; n )Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) )

SumN( n; m )Wenn( n = 0;! m;// Sonst! SumN( n - 1; GetAsNumber( m ) + n ))

Page 46: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustom Functions / Eigene Funktionen

Die einfachste Eigene Funktion

• Die einfachste Funktion besteht aus einem einzigen Zeichen

• Der Name ist notwendig; der Unterstrich gehört zu den erlaubten Zeichen

• Kein Parameter erforderlich

• Kein Funktionscode erforderlich

• Der Rückgabewert der Funktion: eine leere Zeichenfolge

• Einsatzgebiete dieser Funktion:‣ Als Platzhalter für „optionale“ Funktionsparameter‣ Erleichterung im Einsatz mit FileMaker Funktion Berechne

_( )

Page 47: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustomer Functions / Eigene Funktionen

Vielen Dank für Ihre Aufmerksamkeit

Page 48: FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FileMaker Konferenz 2012 Salzburgwww.filemaker-konferenz.com

Dipl.-Ing. Arnold KegebeinCustomer Functions / Eigene Funktionen

Vielen Dank unseren Sponsoren

Danke für das Bewerten dieses Vortrages