Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Hallo Hans Werner,


Am 07.12.2017 um 10:29 schrieb OoOHWHOoO:
Oder habe ich Dich vielleicht völlig falsch verstanden ?

Hast Du. Versuche mal, die Texte zu lesen und nicht gleich auf deine Anwendung/die Hilfe-Beispiele zu übertragen und Fehlinterpretationen hinzubauen.

Du kannst keine "Kommas" weglassen - das ist weder der Sinn noch meine Aussage.

Trenne das Ganze abstarkt:

Du übergibst beim Aufruf der Funktion dieser eine Liste mit Parametern ... die Anzahl der Parameter wird bestimmt durch die Anzahl der Trenner +1

Also: Funktion(a,b)   -> zwei Parameter, weil ein Trenner dabei ist.

Die Parameter werden nun entsprechend der physikalischen Reihenfolge der aufrufenden Funktion übergeben.

sub Funktion( a1,b1,c1,d1)     -   würde zu einem Fehler führen, da die Funktion 4 Parameter erwartet, aber nur zwei erhält.

Um den Fehler abzufangen, wird der Begriff "optional" eingeführt:

sub Funktion (a1, b1, optional c1, optional d1)  - kein Fehler mehr, zwei Parameter werden übergeben, 2-4 erwartet. Passt.

Mit isMissing() kannst Du nun c1 und d1 abfragen und eventuel neu definieren bzw Werte zuweisen.

Der Aufruf Funktion(a,,b)  übergibt 3 Parameter - zwei Trenner! Der mittlere fehlt eben nicht! Wäre aber in dem Fall leer und führt zum Fehler, da die Funktion eine Wert erwartet!

sub Funktion (a1, b1, optional c1, optional d1)  -> a1 bekommt den Wert von a zugewiesen, b1 bekommt den Wert von "nichts" zugewiesen, c1 bekommt den Wert von b zugewiesen, der Parameter d1 fehlt.
Das kann dir isMissing(d1) = true liefern.

Setzt Du alle Parameter auf "optional" würde das bei Basic gehen (siehe letzte mail) - ist aber unsauber und nicht korrekt.

Korrekt wäre: sub Funktion (a1 as integer, b1 as integer, optional c1 as integer, optional d1 as integer)  -> Das führt beim Aufruf funktion(2,,3) zu dem korrekten Ergebnis:

a1 = 2, b1 = 0, c1 = 3, d1 = ?? -> missing

Das ist auch die korrekte Programmierung.

Zu Deiner Aufgabenstellung:

Du willst doch alle drei Parameter haben, oder?  Lass das optionale weg und verlagere die Prüfung vor den Aufruf. In dem Zusammenhang viel sinnvoller. Und dann übergib immer drei Werte. Willst Du die Prüfung unbedingt in der aufzurufenden Funktion, arbeite mit Platzhalterwerten - z.B. -1 für "nichts".

Viele Grüße
Thomas



--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.