SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Eigene Funktionen / Custom Functions

                                         Von den Grundlagen zu
                                 fortgeschrittenen Programmiertechniken




Dipl.-Ing. Arnold Kegebein                                                FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                           www.filemaker-konferenz.com
Zu meiner Person
            •     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




Dipl.-Ing. Arnold Kegebein                                       FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                  www.filemaker-konferenz.com
Theoretische Betrachtungen
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



Dipl.-Ing. Arnold Kegebein                                                               FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                                          www.filemaker-konferenz.com
Eigene Funktionen
            Eine 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)


Dipl.-Ing. Arnold Kegebein                                        FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                   www.filemaker-konferenz.com
Aufbau einer Funktion
         NullWert( Wert; Null )
             Wenn( IstLeer( Wert );
             ! Null;
             // Sonst
             ! Wert
             )


            •     Funktionsname

            •     Funktionsparameter

            •     Funktionscode

            •     Funktionsergebnis




Dipl.-Ing. Arnold Kegebein                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                     www.filemaker-konferenz.com
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



Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
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




Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
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.




Dipl.-Ing. Arnold Kegebein                                       FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                  www.filemaker-konferenz.com
FileMaker Dialoge
Dialog: Funktionen verwalten
            •     Aufruf: Ablage > Verwalten > Eigene Funktionen…




                                        Funktionen aus anderen
                                         Modulen importieren




Dipl.-Ing. Arnold Kegebein                                       FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                  www.filemaker-konferenz.com
Dialog: Funktionen importieren
            •     Aufruf: Ablage > Verwalten > Eigene Funktionen… > Importieren




Dipl.-Ing. Arnold Kegebein                                      FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                 www.filemaker-konferenz.com
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 Eigene
                  Funktionen werden zuerst auf
                  die gleichzeitig importierten
                  Funktionen angewand, sonst
                  auf schon existierende CFs

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



Dipl.-Ing. Arnold Kegebein                                        FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                   www.filemaker-konferenz.com
Dialog: Funktionen bearbeiten




               Parameter hinzufügen             Parameter löschen


                                  Parameter umbenennen




Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
Programmierung von
Eigenen 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


Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
Kommentare
            •     Zeilenkommentare

                  Hole( LetzteFehlerNr ) = 109 // Berechtigung fehlt

                 ‣     Vom // bis zum Zeilenende

            •     Blockkommentare

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

                 ‣     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


Dipl.-Ing. Arnold Kegebein                                        FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                   www.filemaker-konferenz.com
Operatoren
            •     Alle bekannten Operatoren aus FileMaker
                  Standarddialogen können verwendet werden

            •     Rechenoperatoren: + - * / ^

            •     Textoperatoren: " " & ¶

            •     Klammern: ( )

            •     Vergleichsoperatoren: = ≠ > < ≥ ≤

            •     Logische Operatoren: UND ODER XODER NICHT




Dipl.-Ing. Arnold Kegebein                                    FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                               www.filemaker-konferenz.com
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.

Dipl.-Ing. Arnold Kegebein                                           FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                      www.filemaker-konferenz.com
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




Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
SetzeVars
         SetzeVars( [
         ! $$GLOBAL = "globale Variable";
             Variablendeklarationen
         ! $Lokal = "lokale Variable";
         ! _Einfach = "einfache Variable"
         ];
         ! "Heute ist der "
         ! & Ausdruck mit Rückgabewert
              Hole( SystemDatum )
         )


            •     SetzeVars erlaubt die Deklaration von einer oder mehreren
                  Variablen

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




Dipl.-Ing. Arnold Kegebein                                        FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                   www.filemaker-konferenz.com
SetzeVars Beispiel
         Wenn( HoleNtenDatensatz( Test::Ergebnis; $X ) < 1,0 ODER
         HoleNtenDatensatz( Test::Ergebnis; $X ) > 1,8);
         ! "Ergebnis ausserhalb Testbereich"
         )


            •     Wiederholte Berechnung

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

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


Dipl.-Ing. Arnold Kegebein                                      FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                 www.filemaker-konferenz.com
Variablen
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


Dipl.-Ing. Arnold Kegebein                                           FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                      www.filemaker-konferenz.com
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




Dipl.-Ing. Arnold Kegebein                                      FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                 www.filemaker-konferenz.com
Gültigkeitsbereich von Variablen
          Modul A                                  Globale Variablen

             Script 1             $$X = "global"   •   Im gesamten Modul
                                                       bekannt, in dem sie
                 Script 1-1       $$X = "global"       definiert werden
                 Script 1-2       $$X = "global"   •   Können überall im Modul
                                                       geändert werden; neuer
                                                       Wert ist im gesamten
             Script 2             $$X = "global"       Modul sichtbar
                 Script 2-1       $$X = "global"
                                                   •   Unbekannt in anderen
                                                       Modulen

          Modul B

             Script 3



Dipl.-Ing. Arnold Kegebein                                       FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                  www.filemaker-konferenz.com
Gültigkeitsbereich von Variablen
          Modul A                                     Lokale Variablen

             Script 1                  $X = "lokal"   •   Nur in dem Script
                                                          bekannt, in dem sie
                 Script 1-1
                                                          definiert werden
                 Script 1-2
                                                      •   Untergeordnete Scripts
                                                          können eine Variable mit
                                                          dem gleichen Namen
             Script 2                                     definieren, ohne dadurch
                 Script 2-1                               den Wert der anderen
                                                          Variable zu verändern


          Modul B

             Script 3



Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
Gültigkeitsbereich von Variablen
          Script 1                                      Einfache Variablen

             SetzeVars                 _X = "einfach"   •   Werden in der Funktion
                    SetzeVars             _X = "temp"       SetzeVars erstellt

                                                        •   Sind nur im gleichen oder
             SetzeVars                                      untergeordneten SetzeVars-
                                                            Konstrukten bekannt
                    SetzeVars
                                                        •   Untergeordnete SetzeVars-
                                                            Konstrukte können zeit-
                                                            weilig den Wert ändern,
                                                            aber der ursprüngliche
                                                            Wert wird beim Verlassen
                                                            wieder hergestellt




Dipl.-Ing. Arnold Kegebein                                            FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                       www.filemaker-konferenz.com
Fortgeschrittene
Programmiertechniken
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

Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
Funktionskapselung
          FMSQL Plug-in
           • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } )

          SQL( query )
          !   qFMSQL_ExecuteSQL( query )


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

          SQL( query )
          !   mFMb_DoSQL( query )

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

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



Dipl.-Ing. Arnold Kegebein                                                            FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                                       www.filemaker-konferenz.com
Funktionskapselung
          FMSQL Plug-in
           • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } )


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




Dipl.-Ing. Arnold Kegebein                                                           FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                                      www.filemaker-konferenz.com
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 )


Dipl.-Ing. Arnold Kegebein                                              FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                         www.filemaker-konferenz.com
Optionale Paramter bei Eigenen Funktionen
            •     Reguläre Parameter

                 ‣     Bei Standardaufruf wird ein Leertext übergeben

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


            •     Option Parameter

                 ‣     Ein Text übernimmt beliebig viele zusammensetzte Optionen

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


            •     Lokale oder globale Variablen

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



Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
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




Dipl.-Ing. Arnold Kegebein                                          FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                     www.filemaker-konferenz.com
Rekursionen
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


Dipl.-Ing. Arnold Kegebein                                              FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                         www.filemaker-konferenz.com
Beispiel Rekursion
         Aufgabe:
          
     Ein Text soll beliebig oft wiederholt werden
         Name:
 
           
     Wiederholen
         Parameter:
 
            Text
 (Text)
 Der zu wiederholende Text
         
   
  
    
            Anzahl
 (Zahl)
 Anzahl der Wiederholungen
         Rückgabe:
 
             (Text)
 Der wiederholte Text


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

Dipl.-Ing. Arnold Kegebein                                                FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                           www.filemaker-konferenz.com
Beispiel Rekursion
         Wiederholen( 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




Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
Beispiel Rekursion
         Wiederholen( _Text; _Anzahl )                           Kein Abbruch
                _Text & Wiederholen( _Text; _Anzahl - 1 )

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

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


            •     Statt einer Abbruchbedingung kann man auch eine
                  Rekursionsbedingung schreiben



Dipl.-Ing. Arnold Kegebein                                      FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                 www.filemaker-konferenz.com
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




Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
Beispiel Endrekursion
          SumN( n )                                Keine Endrekursion
             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 = 3
          SumN(3) = 3 + 3 = 6




Dipl.-Ing. Arnold Kegebein                               FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                          www.filemaker-konferenz.com
Beispiel Endrekursion
          SumN( n )
             AddSumN( 0; n )
          AddSumN( m; n )
             Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) )



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




Dipl.-Ing. Arnold Kegebein                               FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                          www.filemaker-konferenz.com
Praxisbeispiele
Beispiel Summenfunktion
          SumN( n )
             AddSumN( 0; n )
          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 )
             )


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




Dipl.-Ing. Arnold Kegebein                               FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                          www.filemaker-konferenz.com
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


Dipl.-Ing. Arnold Kegebein                                         FileMaker Konferenz 2012 Salzburg
Custom Functions / Eigene Funktionen                                    www.filemaker-konferenz.com
Vielen Dank für Ihre Aufmerksamkeit




Dipl.-Ing. Arnold Kegebein               FileMaker Konferenz 2012 Salzburg
Customer Functions / Eigene Funktionen        www.filemaker-konferenz.com
Vielen Dank unseren Sponsoren




      Danke für das Bewerten dieses Vortrages


Dipl.-Ing. Arnold Kegebein                 FileMaker Konferenz 2012 Salzburg
Customer Functions / Eigene Funktionen          www.filemaker-konferenz.com

Contenu connexe

En vedette

Social Media Services
Social Media ServicesSocial Media Services
Social Media ServicesSMTravelers
 
FMK 2013 Schnittstellen Datenaustausch, Longin Ziegler
FMK 2013 Schnittstellen Datenaustausch, Longin ZieglerFMK 2013 Schnittstellen Datenaustausch, Longin Ziegler
FMK 2013 Schnittstellen Datenaustausch, Longin ZieglerVerein FM Konferenz
 
Die zwei häuser - The Two Houses
Die zwei häuser - The Two HousesDie zwei häuser - The Two Houses
Die zwei häuser - The Two HousesFreekidstories
 
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauen
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauenAntiquus 521 -_warum_sind_maenner_gluecklicher_als_frauen
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauenJimena Meneses
 
Eine kleine praktische Philosophie über das Requirements Engineering
Eine kleine praktische Philosophie über das Requirements EngineeringEine kleine praktische Philosophie über das Requirements Engineering
Eine kleine praktische Philosophie über das Requirements Engineeringadesso AG
 
Augmented Reality im mobilen Social Web
Augmented Reality im mobilen Social WebAugmented Reality im mobilen Social Web
Augmented Reality im mobilen Social WebChristoph Hess
 
Kreativitätstechniken für Instandhalter_ TA03-31b-A
Kreativitätstechniken für Instandhalter_ TA03-31b-AKreativitätstechniken für Instandhalter_ TA03-31b-A
Kreativitätstechniken für Instandhalter_ TA03-31b-Adankl+partner consulting gmbh
 
Think pi beratung, training und coaching
Think pi beratung, training und coachingThink pi beratung, training und coaching
Think pi beratung, training und coachingthink-pi
 
Die Geschichte des Schreibens
Die Geschichte des SchreibensDie Geschichte des Schreibens
Die Geschichte des Schreibenshabasch
 
102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401Heather Harley
 
Daftar harga barang
Daftar harga barangDaftar harga barang
Daftar harga barangAditya Eka
 
Das kleine buch der Neujahr - A Children's Book about New Year
Das kleine buch der Neujahr - A Children's Book about New YearDas kleine buch der Neujahr - A Children's Book about New Year
Das kleine buch der Neujahr - A Children's Book about New YearFreekidstories
 

En vedette (15)

Social Media Services
Social Media ServicesSocial Media Services
Social Media Services
 
FMK 2013 Schnittstellen Datenaustausch, Longin Ziegler
FMK 2013 Schnittstellen Datenaustausch, Longin ZieglerFMK 2013 Schnittstellen Datenaustausch, Longin Ziegler
FMK 2013 Schnittstellen Datenaustausch, Longin Ziegler
 
Die zwei häuser - The Two Houses
Die zwei häuser - The Two HousesDie zwei häuser - The Two Houses
Die zwei häuser - The Two Houses
 
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauen
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauenAntiquus 521 -_warum_sind_maenner_gluecklicher_als_frauen
Antiquus 521 -_warum_sind_maenner_gluecklicher_als_frauen
 
Eine kleine praktische Philosophie über das Requirements Engineering
Eine kleine praktische Philosophie über das Requirements EngineeringEine kleine praktische Philosophie über das Requirements Engineering
Eine kleine praktische Philosophie über das Requirements Engineering
 
Augmented Reality im mobilen Social Web
Augmented Reality im mobilen Social WebAugmented Reality im mobilen Social Web
Augmented Reality im mobilen Social Web
 
(Lean) Six Sigma Green Belt Lehrgang 2015
(Lean) Six Sigma Green Belt Lehrgang 2015(Lean) Six Sigma Green Belt Lehrgang 2015
(Lean) Six Sigma Green Belt Lehrgang 2015
 
Food 2
Food 2Food 2
Food 2
 
Kreativitätstechniken für Instandhalter_ TA03-31b-A
Kreativitätstechniken für Instandhalter_ TA03-31b-AKreativitätstechniken für Instandhalter_ TA03-31b-A
Kreativitätstechniken für Instandhalter_ TA03-31b-A
 
Think pi beratung, training und coaching
Think pi beratung, training und coachingThink pi beratung, training und coaching
Think pi beratung, training und coaching
 
Die Geschichte des Schreibens
Die Geschichte des SchreibensDie Geschichte des Schreibens
Die Geschichte des Schreibens
 
102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401102 Tennessee Avenue N Martinsburg WV 25401
102 Tennessee Avenue N Martinsburg WV 25401
 
Schoene schweiz
Schoene schweizSchoene schweiz
Schoene schweiz
 
Daftar harga barang
Daftar harga barangDaftar harga barang
Daftar harga barang
 
Das kleine buch der Neujahr - A Children's Book about New Year
Das kleine buch der Neujahr - A Children's Book about New YearDas kleine buch der Neujahr - A Children's Book about New Year
Das kleine buch der Neujahr - A Children's Book about New Year
 

Similaire à FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...Verein FM Konferenz
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichVerein FM Konferenz
 
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …Verein FM Konferenz
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...Verein FM Konferenz
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischVerein FM Konferenz
 
FMK2016 - Arnold Kegebein - Recycling
FMK2016 - Arnold Kegebein - RecyclingFMK2016 - Arnold Kegebein - Recycling
FMK2016 - Arnold Kegebein - RecyclingVerein FM Konferenz
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin Ziegler
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin ZieglerFMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin Ziegler
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin ZieglerVerein FM Konferenz
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzVerein FM Konferenz
 
FMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin PankowskiFMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin PankowskiVerein FM Konferenz
 
FMK 2013, Tipps und Tricks FM Go, Robert Kaiser
FMK 2013, Tipps und Tricks FM Go, Robert KaiserFMK 2013, Tipps und Tricks FM Go, Robert Kaiser
FMK 2013, Tipps und Tricks FM Go, Robert KaiserVerein FM Konferenz
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
Zentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDKZentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDKAndré Krämer
 
FMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwFMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwVerein FM Konferenz
 
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschFMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschVerein FM Konferenz
 
FMK2018- Audit Log Arnold Kegebein
FMK2018- Audit Log Arnold KegebeinFMK2018- Audit Log Arnold Kegebein
FMK2018- Audit Log Arnold KegebeinVerein FM Konferenz
 
FMK2015: Virtuelle Tabellen by Arnold Kegebein
FMK2015: Virtuelle Tabellen by Arnold KegebeinFMK2015: Virtuelle Tabellen by Arnold Kegebein
FMK2015: Virtuelle Tabellen by Arnold KegebeinVerein FM Konferenz
 

Similaire à FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein (20)

FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
 
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang WunderlichFMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
FMK2015: FrameWork Konzepte in FileMaker Pro by Wolfgang Wunderlich
 
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
FMK2012: Programmstrukturen - FileMaker Skripten nicht nur für Experten …
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
 
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick RischFMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
FMK2015: Von Skriptparametern Variablen und Globalen by Patrick Risch
 
FMK2016 - Arnold Kegebein - Recycling
FMK2016 - Arnold Kegebein - RecyclingFMK2016 - Arnold Kegebein - Recycling
FMK2016 - Arnold Kegebein - Recycling
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin Ziegler
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin ZieglerFMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin Ziegler
FMK 2013 Suchen, markieren und Listen, Mehrbenutzer , Longin Ziegler
 
FMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian SchmitzFMK 2013 Xojo, Christian Schmitz
FMK 2013 Xojo, Christian Schmitz
 
FMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin PankowskiFMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
 
FMK 2013, Tipps und Tricks FM Go, Robert Kaiser
FMK 2013, Tipps und Tricks FM Go, Robert KaiserFMK 2013, Tipps und Tricks FM Go, Robert Kaiser
FMK 2013, Tipps und Tricks FM Go, Robert Kaiser
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
 
IntelliJ für Flex
IntelliJ für FlexIntelliJ für Flex
IntelliJ für Flex
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
Zentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDKZentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDK
 
FMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten RisseeuwFMK2014: FileMaker Module by Karsten Risseeuw
FMK2014: FileMaker Module by Karsten Risseeuw
 
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico BuschFMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
FMK2012: Datenaustausch zwischen FileMaker und MySQL von Nico Busch
 
FMK2018- Audit Log Arnold Kegebein
FMK2018- Audit Log Arnold KegebeinFMK2018- Audit Log Arnold Kegebein
FMK2018- Audit Log Arnold Kegebein
 
FMK2015: Virtuelle Tabellen by Arnold Kegebein
FMK2015: Virtuelle Tabellen by Arnold KegebeinFMK2015: Virtuelle Tabellen by Arnold Kegebein
FMK2015: Virtuelle Tabellen by Arnold Kegebein
 
ADF Software Factory
ADF Software FactoryADF Software Factory
ADF Software Factory
 

Plus de Verein FM Konferenz

FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfFMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfVerein FM Konferenz
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsVerein FM Konferenz
 
FMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsFMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsVerein FM Konferenz
 
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzFMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzVerein FM Konferenz
 
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzFMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzVerein FM Konferenz
 
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzFMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzVerein FM Konferenz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingVerein FM Konferenz
 
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinFMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinVerein FM Konferenz
 
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserFMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserVerein FM Konferenz
 
FMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtFMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtVerein FM Konferenz
 
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtFMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtVerein FM Konferenz
 
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonFMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonVerein FM Konferenz
 
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussFMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussVerein FM Konferenz
 
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussFMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussVerein FM Konferenz
 
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfFMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfVerein FM Konferenz
 
FMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonFMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonVerein FM Konferenz
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoVerein FM Konferenz
 
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaFMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaVerein FM Konferenz
 
FMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaFMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaVerein FM Konferenz
 
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairFmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairVerein FM Konferenz
 

Plus de Verein FM Konferenz (20)

FMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdfFMK2022 Excel und FileMaker Schittko.pdf
FMK2022 Excel und FileMaker Schittko.pdf
 
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp PulsFMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
FMK2022 Drucken über Dateigrenzen hinweg von Philipp Puls
 
FMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp PulsFMK2022 Custom Functions von Philipp Puls
FMK2022 Custom Functions von Philipp Puls
 
FMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin SchwarzFMK2022 FileMaker Fehler von Martin Schwarz
FMK2022 FileMaker Fehler von Martin Schwarz
 
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard SchulzFMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
FMK2022 FileMaker Server unter Linux Workshop von Bernhard Schulz
 
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard SchulzFMK2022 FileMaker DataAPI und Java von Bernhard Schulz
FMK2022 FileMaker DataAPI und Java von Bernhard Schulz
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam Augusting
 
FMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam AugustinFMK2022 FileMaker und Javascript von Adam Augustin
FMK2022 FileMaker und Javascript von Adam Augustin
 
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert KaiserFMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
FMK2022 Arbeiten mit SVG in FileMaker - Robert Kaiser
 
FMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas HirtFMK2022 Dokumentation - Thomas Hirt
FMK2022 Dokumentation - Thomas Hirt
 
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas HirtFMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
FMK2022 CustomFunctions Fuer Einsteiger - Thomas Hirt
 
FMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell WatsonFMK2022 FileMaker Integrated Development Environment - Russell Watson
FMK2022 FileMaker Integrated Development Environment - Russell Watson
 
FMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph KlussFMK2022 Datenschutz DSGVO Christoph Kluss
FMK2022 Datenschutz DSGVO Christoph Kluss
 
FMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph KlussFMK2022 Rechnungen Inkasso - Christoph Kluss
FMK2022 Rechnungen Inkasso - Christoph Kluss
 
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdfFMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
FMK2022 Die Zukunft von FileMaker - Marcel Moré.pdf
 
FMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell WatsonFMK2019 bug off lightning talk by Russell Watson
FMK2019 bug off lightning talk by Russell Watson
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
 
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza KoudelkaFMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
FMK2019 FileMaker Performance Update 2019 by HOnza Koudelka
 
FMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza KoudelkaFMK2019 Hardware Integrated by HOnza Koudelka
FMK2019 Hardware Integrated by HOnza Koudelka
 
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald MairFmk2019 Produktentwicklung mit FileMaker by Harald Mair
Fmk2019 Produktentwicklung mit FileMaker by Harald Mair
 

FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

  • 1. Eigene Funktionen / Custom Functions Von den Grundlagen zu fortgeschrittenen Programmiertechniken Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 2. Zu meiner Person • 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 4. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 5. Eigene Funktionen Eine 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) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 6. Aufbau einer Funktion NullWert( Wert; Null ) Wenn( IstLeer( Wert ); ! Null; // Sonst ! Wert ) • Funktionsname • Funktionsparameter • Funktionscode • Funktionsergebnis Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 7. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 8. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 9. 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. Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 11. Dialog: Funktionen verwalten • Aufruf: Ablage > Verwalten > Eigene Funktionen… Funktionen aus anderen Modulen importieren Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 12. Dialog: Funktionen importieren • Aufruf: Ablage > Verwalten > Eigene Funktionen… > Importieren Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 13. 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 Eigene Funktionen werden zuerst auf die gleichzeitig importierten Funktionen angewand, sonst auf schon existierende CFs • Bei fehlenden Verweisen wird der gesamte Code in einen Kommentar umgewandelt Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 14. Dialog: Funktionen bearbeiten Parameter hinzufügen Parameter löschen Parameter umbenennen Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 16. Ü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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 17. Kommentare • Zeilenkommentare Hole( LetzteFehlerNr ) = 109 // Berechtigung fehlt ‣ Vom // bis zum Zeilenende • Blockkommentare Auswahl( x; "" /* Null */; 100; 250; 333; 500; 750 ) ‣ 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 18. Operatoren • Alle bekannten Operatoren aus FileMaker Standarddialogen können verwendet werden • Rechenoperatoren: + - * / ^ • Textoperatoren: " " & ¶ • Klammern: ( ) • Vergleichsoperatoren: = ≠ > < ≥ ≤ • Logische Operatoren: UND ODER XODER NICHT Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 19. 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. Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 20. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 21. SetzeVars SetzeVars( [ ! $$GLOBAL = "globale Variable"; Variablendeklarationen ! $Lokal = "lokale Variable"; ! _Einfach = "einfache Variable" ]; ! "Heute ist der " ! & Ausdruck mit Rückgabewert Hole( SystemDatum ) ) • SetzeVars erlaubt die Deklaration von einer oder mehreren Variablen • SetzeVars erwartet einen Ausdruck, dessen Ergebnis der Rückgabewert der Funktion ist Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 22. SetzeVars Beispiel Wenn( HoleNtenDatensatz( Test::Ergebnis; $X ) < 1,0 ODER HoleNtenDatensatz( Test::Ergebnis; $X ) > 1,8); ! "Ergebnis ausserhalb Testbereich" ) • Wiederholte Berechnung • Optimierung möglich für schneller Berechnung und geringere Speicherauslastung SetzeVars( [ ! Ergebnis = HoleNtenDatensatz( Test::Ergebnis; $X ) ]; ! Wenn( Ergebnis < 1,0 ODER Ergebnis > 1,8); ! ! "Ergebnis ausserhalb Testbereich" ! ) ) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 24. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 25. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 26. Gültigkeitsbereich von Variablen Modul A Globale Variablen Script 1 $$X = "global" • Im gesamten Modul bekannt, in dem sie Script 1-1 $$X = "global" definiert werden Script 1-2 $$X = "global" • Können überall im Modul geändert werden; neuer Wert ist im gesamten Script 2 $$X = "global" Modul sichtbar Script 2-1 $$X = "global" • Unbekannt in anderen Modulen Modul B Script 3 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 27. Gültigkeitsbereich von Variablen Modul A Lokale Variablen Script 1 $X = "lokal" • Nur in dem Script bekannt, in dem sie Script 1-1 definiert werden Script 1-2 • Untergeordnete Scripts können eine Variable mit dem gleichen Namen Script 2 definieren, ohne dadurch Script 2-1 den Wert der anderen Variable zu verändern Modul B Script 3 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 28. Gültigkeitsbereich von Variablen Script 1 Einfache Variablen SetzeVars _X = "einfach" • Werden in der Funktion SetzeVars _X = "temp" SetzeVars erstellt • Sind nur im gleichen oder SetzeVars untergeordneten SetzeVars- Konstrukten bekannt SetzeVars • Untergeordnete SetzeVars- Konstrukte können zeit- weilig den Wert ändern, aber der ursprüngliche Wert wird beim Verlassen wieder hergestellt Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 30. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 31. Funktionskapselung FMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } ) SQL( query ) ! qFMSQL_ExecuteSQL( query ) DoSQL Plug-in • mFMb_DoSQL( sqlString {; executeOnIdle } ) • mFMb_DoSQL_SetColumnSeparator( unicodeNumber ) • mFMb_DoSQL_SetRowSeparator( unicodeNumber ) SQL( query ) ! mFMb_DoSQL( query ) FileMaker Pro 12 • ExecuteSQL( sqlQuery; fieldSeparator; rowSeparator {; arguments ... } ) SQL( query ) ! ExecuteSQL( query; "{Tab}"; ¶ ) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 32. Funktionskapselung FMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } ) 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 ) ) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 33. 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 ) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 34. Optionale Paramter bei Eigenen Funktionen • Reguläre Parameter ‣ Bei Standardaufruf wird ein Leertext übergeben Alpha( Notwendig; {Optional} ) Aufruf: Alpha( "Lorem ipsum"; _ ) • Option Parameter ‣ Ein Text übernimmt beliebig viele zusammensetzte Optionen Beta( Notwendig; {Optionen} ) Aufruf: Beta( 475/12; "Einheit=€ Genauigkeit=2" ) • Lokale oder globale Variablen Gamma( Notwendig ) Aufruf: SetzeVars( $Gamma.Option = "xyz"; _ ) & Gamma( “LiLaLu” ) Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 35. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 37. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 38. Beispiel Rekursion Aufgabe: Ein Text soll beliebig oft wiederholt werden Name: Wiederholen Parameter: Text (Text) Der zu wiederholende Text Anzahl (Zahl) Anzahl der Wiederholungen Rückgabe: (Text) Der wiederholte Text Rekursion: Text ausgeben Abbruch: Nach der n-ten Wiederholung → Schleifenzähler → Initialisierung, Inkrementierung, Überprüfung Initialisierung: Autom. beim Funktionsaufruf (Parameterübergabe) Inkrement: Beim rekursiven Funktionsaufruf: Anzahl - 1 Überprüfung: Anzahl < 1 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 39. Beispiel Rekursion Wiederholen( 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 40. Beispiel Rekursion Wiederholen( _Text; _Anzahl ) Kein Abbruch _Text & Wiederholen( _Text; _Anzahl - 1 ) Wiederholen( _Text; _Anzahl ) Abbruchbedingung Wenn( _Anzahl ) < 1; ! // Abbruch der Rekursion // Sonst ! _Text & Wiederholen( _Text; _Anzahl - 1 ) ) Wiederholen( _Text; _Anzahl ) Rekursionsbedingung Wenn( _Anzahl ≥ 1; ! _Text & Wiederholen( _Text; _Anzahl - 1 ) ) • Statt einer Abbruchbedingung kann man auch eine Rekursionsbedingung schreiben Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 41. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 42. Beispiel Endrekursion SumN( n ) Keine Endrekursion 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 = 3 SumN(3) = 3 + 3 = 6 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 43. Beispiel Endrekursion SumN( n ) AddSumN( 0; n ) AddSumN( m; n ) Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) ) SumN(3) ! SumN(3) = AddSumN( 0; 3 ) = AddSumN( 3; 2 ) = AddSumN( 5; 1 ) = AddSumN( 6; 0 ) = 6 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 45. Beispiel Summenfunktion SumN( n ) AddSumN( 0; n ) 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 ) ) SumN( n ) ( n * ( n + 1 ) ) / 2 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 46. 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 Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Custom Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 47. Vielen Dank für Ihre Aufmerksamkeit Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Customer Functions / Eigene Funktionen www.filemaker-konferenz.com
  • 48. Vielen Dank unseren Sponsoren Danke für das Bewerten dieses Vortrages Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 Salzburg Customer Functions / Eigene Funktionen www.filemaker-konferenz.com