Top Banner
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
48

FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

Jan 13, 2015

Download

Documents

Von den Grundlagen zu fortgeschrittenen Programmiertechniken.

Ein Vortrag im Rahmen der FileMaker Konferenz 2012 in Salzburg.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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