Navigation: Konzepte und Verfahren >

Eigene Funktionen

Diese Seite drucken
Vorherige Seite Nächste Seite
Zurück zur Kapitelübersicht

Mit der Pro-Lizenz können nun auch eigene Funktionen mit beliebigen Parametern definiert und verwendet werden.

 

Um eine Funktion zu definieren, wird sie als Unterprogramm angelegt. Dieses beginnt mit der Marke

 

::Funktion.XX(Wert1;Wert2)

 

wobei XX für den Funktionsnamen und Wert1 und Wert2 für die Parameter stehen. Das Unterprogramm kann die Werte in den Parameter-Variablen (hier [Wert1] und [Wert2]) verwenden.

Sollten im Hauptprogramm bereits Variablen dieses Namens vorkommen, werden diese nicht berührt, da die hier verwendeten Variablen nur lokale Gültigkeit haben. Zugriff auf Variablen des aufrufenden Skripts können jedoch mit [Muttervariablen.X] erreicht werden.

 

Abgeschlossen wird das Unterprogramm mit einem Zurück-Befehl. Das Ergebnis der Funktion wird dort als Rückgabewert angegeben. Aus Kompatibilitätsgründen kann es auch in die Variable [Funktion.XX] eingesetzt werden, wobei XX wieder für den Funktionsnamen steht.

Es können auch mehrere Ergebnisse zurückgegeben werden - siehe unten.

 

Beim Aufruf der Funktion können einzelne Parameter auch weggelassen werden, wodurch der Inhalt der entsprechenden Variablen innerhalb der Funktion dann leer ist.

Wahlweise können für solche optionalen Parameter auch Standardwerte angegeben werden. Hierzu wird in der Marke einfach Variablenname=Standardwert geschrieben, in obigem Beispiel etwa Wert2=1. Wird dieser Parameter beim Aufruf nicht mit angegeben, ist der Inhalt von [Wert2] innerhalb der Funktion dann 1.

 

Die Verwendung einer so deklarierten Funktion erfolgt wie bei anderen Platzhaltern auch in beliebigen Ausdrücken, in denen [Funktion.XX(Parameter1;Parameter2;...;ParameterN)] eingesetzt wird. Die Parameterliste ist immer mit Semikolons zu trennen.

 

 

Ein Beispiel:

Es soll eine Funktion erstellt werden, die den Mittelwert von zwei Werten errechnet.

Um die Funktion namens "Mittelwert" mit den Eingabeparametern "Wert1" und "Wert2" anzulegen, wird folgende Marke definiert:

::  Funktion.Mittelwert(Wert1;Wert2)

Die folgenden Zeilen berechnen nun das Ergebnis der Funktion aus den beiden Werten und geben das Resultat im Zurück-Befehl zurück.

 

::  Funktion.Mittelwert(Wert1;Wert2)

    ***  Mittelwert der beiden Parameter berechnen

    ***  Ergebnis zurückgeben

Zurück   (Ergebnis: '([Wert1]+[Wert2]) / 2', berechnen)

 

Die so deklarierte Funktion kann nun im Skript beliebig eingesetzt werden. Um etwa den Mittelwert von 2 und 4 zu ermitteln, kann der folgende Platzhalter verwendet werden:

[Funktion.Mittelwert 2;4]

 

 

Variable Parameterliste

Obwohl in der Funktionsmarke üblicherweise die zu übergebenden Parameter vorgegeben werden, können beim Aufruf unabhängig davon beliebig viele Parameter übergeben werden. Die Anzahl der übergebenen Parameter steht innerhalb der Funktion in

[XX.ParameterAnzahl]

 

Die Parameter selbst können aus

 [XX.Parameter(n)]

ausgelesen werden, wobei für n die Parameternummer angegeben wird (1..Anzahl)

 

Beispiel:

Die folgende Funktion berechnet die Summe der übergebenen Parameter:

 

::  Funktion.Summierung()

    ***  Funktion "Summierung" mit beliebigen Eingabeparametern: ermittelt deren Summe

    Schleife Ab   ([Index]  von 1  bis [Summierung.ParameterAnzahl])

        Setze  in [Summe]:  '[Summe] + [Summierung.Parameter([Index])]' (berechnen)

    Schleife Bis

    ***  Ergebnis zurückliefern

Zurück   (Ergebnis: '[Summe]')

 

Wird nun im Skript etwa folgender Platzhalter eingesetzt:

 [Funktion.Summierung 2;3;5;10]

berechnet die Funktion die Summe der Parameter und liefert als Ergebnis 20 zurück.

 

 

Funktionsauswahl:

Die im Skript deklarierten Funktionen werden nebst Erläuterung in der Variablenauswahl unter "Funktionen" angezeigt. Die Erläuterung wird der Kommentarzeile entnommen, die unmittelbar unter der Deklarationsmarke steht. Aus diesem Grund sollte jede Funktion mit einem erklärenden Kommentar beginnen.

 

 

Hier der cX2Web-Code für die oben gezeigten und einige weitere Beispiele:

**cX403091 E92CCDS1F4 2TNEUÿCMjI JMAkJPVZhc mlhYmxlCSA xMjM0DQozC TAJCSBEb3B

wZWx0KDIpI D0gW0Z1bmt 0aW9uLkRvc HBlbHQgMl2 2RmFrdWx05 HQoNCkgPSB bRnVua3Rpb

24uRmFrdWx 05HQgNF22R mFrdWx05HQ oNDszKSA9I FtGdW5rdGl vbi5GYWt1b HTkdCA0OzN

dtk1pdHRlb HdlcnQoMjs 0KSA9IFtGd W5rdGlvbi5 NaXR0ZWx3Z XJ0IDI7NF2 2U3VtbWllc

nVuZygyOzM 7NTsxMCkgP SBbRnVua3R pb24uU3Vtb WllcnVuZyA yOzM7NTsxM F22TWVocmZ

hY2hUZXh0K EhhbGxvOzM pID0gW0Z1b mt0aW9uLk1 laHJmYWNoV GV4dCBIYWx sbzszIF22T

WVocmZhY2h UZXh0KCJIY WxsbztXZWx 0IjszKSA9I FtGdW5rdGl vbi5NZWhyZ mFjaFRleHQ

gIkhhbGxvO 1dlbHQiOzM gXba2VGVzd HZhcmlhYmx lOiBbVmFya WFibGVdCVR JbmZvCU02N

AlCMA0KMAk wCQ0KNQkwC QlDDQowCTA JDQoxOQkwC QkgRnVua3R pb24uRG9wc GVsdChXZXJ

0KQ0KMQkwC QkgRnVua3R pb24gIkRvc HBlbHQiIG1 pdCBFaW5nY WJlcGFyYW1 ldGVyICJXZ

XJ0IjogdmV yZG9wcGVsd CBkZW4gV2V ydA0KMQkwC QkgRXJnZWJ uaXMgaW4gR nVua3Rpb25

zbmFtZW4gc 2V0emVuDQo yMgkwCQk9R nVua3Rpb24 uRG9wcGVsd AkgW1dlcnR dKjIJQw0KM

QkwCQkgVGV zdDogQWxsZ SBWYXJpYWJ sZW4gc2luZ CBsb2thbCA tIMRuZGVyd W5nZW4gd2l

ya2VuIHNpY 2ggbmljaHQ gYXVmIGRhc yBIYXVwdHB yb2dyYW1tI GF1cyENCjI yCTAJCT1WY

XJpYWJsZQk gOTk5DQo0N QkwCQ0KMAk wCQ0KMTkJM AkJIEZ1bmt 0aW9uLkZha 3VsdOR0KFd

lcnQ7RW5kd 2VydD0xKQ0 KMQkwCQkgR nVua3Rpb24 gIkZha3Vsd OR0IiBtaXQ gRWluZ2FiZ

XBhcmFtZXR lciAiV2Vyd CI6IG11bHR pcGxpemllc nQgYWxsZSB aYWhsZW4gd m9uIDEgYml

zIFdlcnQNC jEJMAkJIG9 wdGlvbmFsZ XIgUGFyYW1 ldGVyICJFb mR3ZXJ0IiB oYXQgZGVuI

FdlcnQgMSw gd2VubiBua WNodCBhbmd lZ2ViZW4NC jEJMAkJIEV yZ2VibmlzI GluIEZ1bmt

0aW9uc25hb WVuIHNldHp lbg0KMjkJM AkJIFtXZXJ 0XT5bRW5kd 2VydF0NCjI yCTAJCT1Gd

W5rdGlvbi5 GYWt1bHTkd AkgW1dlcnR dICogW0Z1b mt0aW9uLkZ ha3VsdOR0I FtjWC5SZWN

obmUgW1dlc nRdLTFdO1t FbmR3ZXJ0X V0JQw0KMTc JMAkNCjIyC TAJCT1GdW5 rdGlvbi5GY

Wt1bHTkdAk gW0VuZHdlc nRdDQoxOAk wCQ0KNDUJM AkNCjAJMAk NCjE5CTAJC SBGdW5rdGl

vbi5NaXR0Z Wx3ZXJ0KFd lcnQxO1dlc nQyKQ0KMQk wCQkgRnVua 3Rpb24gIk1 pdHRlbHdlc

nQiIG1pdCB FaW5nYWJlc GFyYW1ldGV ybiAiV2Vyd DEiIHVuZCA iV2VydDIiO iBlcm1pdHR

lbHQgZGVuI E1pdHRlbHd lcnQNCjEJM AkJIEVyZ2V ibmlzIGluI EZ1bmt0aW9 uc25hbWVuI

HNldHplbg0 KMjIJMAkJP UZ1bmt0aW9 uLk1pdHRlb HdlcnQJICh bV2VydDFdK 1tXZXJ0Ml0

pIC8gMglDD Qo0NQkwCQ0 KMAkwCQ0KM TkJMAkJIEZ 1bmt0aW9uL lN1bW1pZXJ 1bmcoKikNC

jEJMAkJIEZ 1bmt0aW9uI CJTdW1taWV ydW5nIiBta XQgYmVsaWV iaWdlbiBFa W5nYWJlcGF

yYW1ldGVyb jogZXJtaXR 0ZWx0IGRlc mVuIFN1bW1 lDQozMwkwC QlaSW5kZXg JUzEJRVtTd

W1taWVydW5 nLlBhcmFtZ XRlckFuemF obF0NCjIyC TAJCSBbU3V tbWVdICsgW 1N1bW1pZXJ

1bmcuUGFyY W1ldGVyKFt JbmRleF0pX Qk9U3VtbWU JQw0KMzQJM AkNCjEJMAk JIEVyZ2Vib

mlzIGluIEZ 1bmt0aW9uc 25hbWVuIHN ldHplbg0KM jIJMAkJPUZ 1bmt0aW9uL lN1bW1pZXJ

1bmcJIFtTd W1tZV0NCjQ 1CTAJDQowC TAJDQoxOQk wCQkgRnVua 3Rpb24uTWV ocmZhY2hUZ

Xh0KFRleHQ 7QW56YWhsK Q0KMQkwCQk gRnVua3Rpb 24gIk1laHJ mYWNoVGV4d CI6IEFuemF

obCBtYWwgZ GVuIFRleHQ genVy/GNrZ 2ViZW4NCjM zCTAJCVpJb mRleAlTMQl FW0FuemFob

F0NCjIyCTA JCT1FcmdlY m5pcyQJIFt UZXh0XQlBC UUNCjM0CTA JDQoxCTAJC SBFcmdlYm5

pcyBpbiBGd W5rdGlvbnN uYW1lbiBzZ XR6ZW4NCjI yCTAJCT1Gd W5rdGlvbi5 NZWhyZmFja

FRleHQJIFt FcmdlYm5pc yRdDQo0NQk wCQ0KMAkwC Q0K=*

 

 

Mehrere Ergebnisse

Es ist auch möglich, mehrere Ergebnisse aus einer Funktion zurückzuliefern Hierzu werden die Ergebnisse mit ; getrennt zurückgegeben. Der Aufruf der Funktion mit [Funktion.X(Parameter)(Index)] liefert das Ergebnis Nummer Index (1-n), während der einfache Aufruf die Ergebnisliste liefert.

Anklicken, um das Beispiel anzuzeigenBeispiel Funktion mit mehreren Ergebnissen
***  Testskript für mehrere Rückgabewerte bei "Eigene Funktion" (von Franklin)
    Setze  in [Dateiname]:  'clickexe*.exe'
    Meldung  "Rückgabe gesamt zu "[Dateiname]":¶[Funktion.GetFileInfo([Dateiname])]¶¶Einzelne Rückgabewerte:¶Datei :              [Funktion.GetFileInfo([Datein ame])(1)]¶Datum/Zeit :    [Funktion.GetFileInfo([Dateiname])(2)]¶Grösse :           [Funktion.GetFileInfo([Dateiname])(3)]¶" (Titel: 'Meldung', Info, OK)
    Beende  Skript
   
::  Funktion.GetFileInfo(Dateiname)
***  Funktion liefert Als Ergebnisse Dateinamen, Datum und Größe
    Setze  in [Dateiname]:  '[Datei.Name [Dateiname]]'
    Setze  in [DateiDatum]:  '[Datei.Datum [Dateiname]§§d. mmmm yyyy]'
    Setze  in [DateiZeit]:  '[Datei.Zeit [Dateiname]]'
    Setze  in [DateiGröße]:  '[Datei.Größe [Dateiname]]'
Zurück   (Ergebnis: '[Dateiname];[DateiDatum] ([DateiZeit]);[DateiGröße]')

**cX400C5D 4D8BDBS1F4 2CMQkwCQkg VGVzdHNrcm lwdCBm/HIg bWVocmVyZS BS/GNrZ2Fi ZXdlcnRlIG JlaSAiRWln ZW5lIEZ1bm t0aW9uIiAo dm9uIEZyYW 5rbGluKQ0K MjIJMAkJIG NsaWNrZXhl Ki5leGUJPU RhdGVpbmFt ZQ0KMwkwCQ lNNjQJQjAJ VE1lbGR1bm cJIFL8Y2tn YWJlIGdlc2 FtdCB6dSAi W0RhdGVpbm FtZV0iOrZb RnVua3Rpb2 4uR2V0Rmls ZUluZm8oW0 RhdGVpbmFt ZV0pXba2RW luemVsbmUg Uvxja2dhYm V3ZXJ0ZTq2 RGF0ZWkgOi AgICAgICAg ICAgICAgW0 Z1bmt0aW9u LkdldEZpbG VJbmZvKFtE YXRlaW5hbW VdKSgxKV22 RGF0dW0vWm VpdCA6ICAg IFtGdW5rdG lvbi5HZXRG aWxlSW5mby hbRGF0ZWlu YW1lXSkoMi ldtkdy9nNz ZSA6ICAgIC AgICAgICBb RnVua3Rpb2 4uR2V0Rmls ZUluZm8oW0 RhdGVpbmFt ZV0pKDMpXb YNCjUJMAkJ Qw0KMAkwCQ 0KMTkJMAkJ IEZ1bmt0aW 9uLkdldEZp bGVJbmZvKE RhdGVpbmFt ZSkNCjEJMA kJIEZ1bmt0 aW9uIGxpZW ZlcnQgQWxz IEVyZ2Vibm lzc2UgRGF0 ZWluYW1lbi wgRGF0dW0g dW5kIEdy9t 9lDQoyMgkw CQkgW0RhdG VpLk5hbWUg W0RhdGVpbm FtZV1dCT1E YXRlaW5hbW UNCjIyCTAJ CSBbRGF0ZW kuRGF0dW0g W0RhdGVpbm FtZV2np2Qu IG1tbW0geX l5eV0JPURh dGVpRGF0dW 0NCjIyCTAJ CSBbRGF0ZW kuWmVpdCBb RGF0ZWluYW 1lXV0JPURh dGVpWmVpdA 0KMjIJMAkJ IFtEYXRlaS 5HcvbfZSBb RGF0ZWluYW 1lXV0JPURh dGVpR3L232 UNCjQ1CTAJ CSAJQVtEYX RlaW5hbWVd O1tEYXRlaU RhdHVtXSAo W0RhdGVpWm VpdF0pO1tE YXRlaUdy9t 9lXQ0K=*

 

 


cX-Webseite: http://www.clickexe.de