0

Eigene Funktionen erstellen

Komisch, deine Nachricht kann ich in der Email lesen, aber hier in Forum ist nur der Name Sichtbar.

14 Antworten

null
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ich hatte bei den anderen Themen auch schon den Eindruck, dass der erste Ausgangsbeitrag immer fehlt. Dachte schon, es läge an mir ... ;)
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ja komisch, darum hier nochmal zu meinem Anliegen. Ich würde gerne mal auf die eigenen Funktionen zu erstellen eingehen. Würde gerne mal Anwendungsbeispiele sehen. Hier hab ich mal mit einer Funktion rumgespielt

    var x := 1;
    var x := x + 1;
    let sa := test;
    function anrede(sa : text) do
    "Sehr geehrte Frau " + test + x + "!"
    end;
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    zurück zu Funktionen.
    die Funktionen dienen dazu, komplizierte sich wiederholende Formeln zu ersparen. Mit dem Befehl "function" deklariert man erstmals eine Funktion, dann nennt man den Namen der Funktion und dann in Klammern Namen des VParameters, der in dieser Funktion vorkommt und auch der Parametertyp, der an die Funktion übergeben wird, muss an dieser Stelle deklariert werden. Also:
    function hello (x : text).
    Mit dem Befehl "do" kann man dann die eigentliche Formel schreiben:
    function hello (x : text) do
    end;
    Jetzt kann man die Funktion nutzen. Angenommen, es gibt ein Feld "Vorname". Wenn man dort einen Trigger nach Update schreibt:
    ---
    function hello (x : text) do
    "Hallo "+ x +", schön dich zu sehen!"
    end;
    'Begrüßung':=hello(Vorname)
    ---

    Wenn jetzt in Vorname "Leo" geschrieben wird, erscheint im Feld "Begrüßung" ein Text "Hallo Leo, schön dich zu sehen!"

    Da ich kein Programmierer bin, schreibe ich hier nur, wie ich die Dinge verstehe. Wenn es eine andere Erklärung gibt, gerne.
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ja so hatte ich es auch verstanden, mittels trigger hab ich es noch nicht ausprobiert. Aber wenn jemand hier Beispiele für Funktionen hat immer her damit.
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hier ein Beispiel:

    function test(x:text, y:number, z:date) do
    "Ich heisse "+x+" und bin "+y+" Jahre alt. Geschrieben am: "+z
    end

    Nun kann man diese verwenden:
    let name:= "Peter";
    let alter:=34;
    let datum:=today();
    test(name, alter, datum) oder direkt test("Peter", 34, "08.01.2018") ergibt dann:
    "Ich heisse Peter und bin 34 Jahre alt. Geschrieben am: 08.01.2018"

    Für die ID bei function(name:id) gibt es folgende:
    • text
    • number
    • boolean
    • date
    • time
    • datetime
    Eventuell gibt es noch weitere, habe ich aber noch nicht entdeckt.
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    @Nik: Bei Facebook würde ich auf "Gefällt mir" klicken, statt dessen hier: Danke für das Beispiel. ;)
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo AxelE

    Verstehe deinen Kommentar gerade nicht. Bei Facebook habe ich aber schon vor einer Weile auf „Gefällt mir“ geklickt ;-)
    • AxelE
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Sorry, wollte sagen: Wenn dies Facebook wäre, dann hätte ich bei deinem Beitrag auf "Gefällt mir" klicken können (m. E. einer der wenigen Vorzüge solcher Plattformen, dass man Beiträge auf einfache Weise bewerten kann).
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Alles klar und besten Dank dir!

    Ok in diesem Fall hier noch ein weiteres Beispiel aus der Praxis was man damit machen kann:

    let unr := Nr;
    function bg(x : number,y : number) do
    y := y + 1;
    for y from 1 to y do
    let p := (create xBudget);
    p.(XCheckliste := unr);
    p.(BNr := max(XCheckliste.Budget.BNr) + 1);
    p.(Art := x);
    switch x do
    case 1:
    p.(Wohnkosten := if y = 3 then 7 else y end)
    case 2:
    p.(Wohnkosten := y)
    case 3:
    p.(Wohnkosten := y)
    case 4:
    p.(Wohnkosten := y)
    case 5:
    p.('Energie/Kommunikation' := y)
    case 6:
    p.(Versicherungen := y)
    case 7:
    p.('Öffentlicher Verkehr/Auto/Motorrad/Velo' := y)
    case 8:
    p.(Verschiedenes := y)
    case 9:
    p.(Haushaltsausgaben := y)
    case 10:
    p.('Persönliche Auslagen' := y)
    case 11:
    p.(Kinder := y)
    case 12:
    p.(Gesundheit := y)
    case 13:
    p.('Übrige Ausgaben' := y)
    case 14:
    p.('Ferien/Freizeit' := y)
    end
    end
    end;
    bg(1, 3);
    bg(2, 7);
    bg(3, 7);
    bg(4, 7);
    bg(5, 5);
    bg(6, 3);
    bg(7, 8);
    bg(8, 4);
    bg(9, 4);
    bg(10, 5);
    bg(11, 3);
    bg(12, 2);
    bg(13, 3);
    bg(14, 3)
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Große Klasse!!!
    • jmbrenn_webde
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Liebe NINOX-Nutzer,

    kann man in einer anwenderdefinierten Funktion auch ein Array übergeben? Als Parameter für den Variablentyp wird array leider nicht akzeptiert.

    Vielen Dank und beste Grüße

     

    Jörg

    • Team Lead Customer Service
    • joerg
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Jörg, 

    kannst du mal bitte ein Beispiel geben? 

    Eigentlich sollte es so funktionieren: 

     

    let MyArray1 := [1, 2, 81];
    let MyArray2 := [1, 2, 9 * 9];

     

    Gruß, Jörg

    • jmbrenn_webde
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Jörg,

    vielen Dank für Deine Interstützung! In der Hoffnung, Dich hier nicht falsch verstanden zu haben - mir ging es hierbei allerdings nicht um die Generierung eines Arrays, sondern um die Übergabe eines existierenden Arrays an eine benutzerdefinierte Funktion etwa in der Form

    function mache_etwas(myAr : array)

    ....

    end;

    mache_etwas(myAr)

    Als workaround habe ich inzwischen den folgenden Weg gefunden: Umwandlung des Arrays in einen String mit concat(myAr) und Übergabe als String an mache_etwas. In der Funktion dann Zurück-Umwandlung in Array mit split(myAr, ", ").

     

    Nochmals besten Dank und viele Grüße

     

    Jörg

    • Gunther.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Noch ein Hinweis:

    1. Die Aufrufparameter übergiben nur den Wert (call by value), d.h wenn im Rumpf der Funktion die Varable bearbeitet wird, dringt das nicht nach außen.

    Beispiel:

    let aussen := "Start";
    function Hey(input : text) do
    input := "Stop"
    end;
    Hey(aussen);
    alert(aussen)

    2. Variable, die im Rumpf definiert sind, sind auch nur hier gültig, sind also nach außen nicht definiert.

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 14Antworten
  • 5638Ansichten