Autor Thema: Optionale Übergabewarte in einer Funktion .... geht das?  (Gelesen 4690 mal)

Offline hOtze

  • Aktives Mitglied
  • ***
  • Beiträge: 159
  • Geschlecht: Männlich
  • .:[gEHt nIt???? gIBTs nIt!!!!]:.
Hi Kollegas,
hab hier mal ne Frage / Problem.

Ich habe mir für ein Projekt inerhalb Notes eine Klasse geschrieben. Nun würde ich eine Funktion der Klasse gerne um einen Parameter erweitern. Zum Beispiel noch einen Variant mitgeben.

Ist es möglich die neue Übergabe Variable in der Funktion irgendwie als Optional zu deklarieren? Ähnlich den Notes Klassen?

Problem ist nämlich nun das ich ja nach dem hinzufügen der neuen Variablen ALLE aufrufe diese Funktion finden müßte, und diesen dann entsprechend abändern. Läßt sich das nit umgehen?


Hoffe ihr habt vielleicht noch gute Idee für mich.
...........::]hOtze[::...............................................

Offline Roalf

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Ich bin ein speicherrenitentes Programm!
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #1 am: 21.09.04 - 12:14:41 »
geht leider nicht.

So genial wie in C++
funktion test( int a; long b = 32)
gehts nicht.

die Sprachsyntax von VB lässt dies nicht in dem Maße zu. Viele Notesklassen sind aber nicht in Script...sondern in C++ geschrieben..und können es entsprechend trotzdem......


viel von dem was Notesklassen können, ist so für den Anwender in Script garnicht abbildbar.....
Notes: Unbegreifliche Lösungen für unlösbare Probleme

Offline Torian

  • Frischling
  • *
  • Beiträge: 3
  • Ich liebe dieses Forum!
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #2 am: 21.09.04 - 17:42:54 »
Hallo,

das geht mit einem Trick.

Function xy(x as String) As Integer
      xy = xyz(x, "")
end Function

function xyz(x As String, z as Variant)

end function

So kannst du eine neue Funktion mit einem weiteren Parameter erstellen und die alte Funktion beibehalten. In der alten Funktion rufst du die neue auf und setzt den neuen Parameter auf eine festen Wert.

 ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #3 am: 21.09.04 - 17:46:59 »
Gehen tut sich das so, aber ... Das ergibt dann aber nicht gerade einen sauberen, gut wartbaren Code.

Wenn hOtze die Chance hat, sollte er lieber die bestehende Function ändern und die Bezüge darauf auch. Und das nächste Mal mehr Programmplanung betreiben  ;D

Bernhard

Offline Torian

  • Frischling
  • *
  • Beiträge: 3
  • Ich liebe dieses Forum!
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #4 am: 21.09.04 - 17:53:43 »
Aber das Risiko irgendwo eine Funktion zu vergessen ist doch wesentlich höher, oder?
Was ist denn daran nicht sauber, wenn ich fragen darf?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #5 am: 21.09.04 - 18:04:04 »
Aber das Risiko irgendwo eine Funktion zu vergessen ist doch wesentlich höher, oder?

Die "vergessene Funktion" sprich ihr Aufruf meldet sich dann schon ;-) Wenn man ein so umfangreiches Programm hat, dass einem die Übersicht verloren gehen kann, gibt es hierfür ja entsprechende Tools wie Teamstudio Analyzer.

Unsauber: Eigentlich will man ja eine neue, erweiterte Funktion. Das alte Ding bleibt aber drin, anstatt entfernt zu werden. Der nächste Programmierer blickt das jetzt vielleicht nicht mehr - oder man selber auch nicht mehr und ruft dann mal die eine und mal die andere auf.
"Ordnung und Sauberkeit im Schlachthaus" erfordern erstmal Mehraufwand, machen sich dann aber später bezahlt.

By the way: Die eigentliche Anfrage "Kann man LS functions optionale Parameter verpassen" wird damit ja auch nicht geklärt ...

Bernhard

Glombi

  • Gast
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #6 am: 21.09.04 - 19:29:13 »
Die Läsung von Torian ist gut  ;) denn das mache ich auch öfters so  ;D

Manchmal verwende ich auch anfangs nicht benötigte Parameter a la

Sub xy (a as string, b as Integer, empty1 as Variant, empty2 as Variant ) etc.
um dann noch nachträglich solche Parameter nutzen zu können.

Leider ist Script nicht wie Java, wo man überladen kann  :'(

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #7 am: 21.09.04 - 19:33:56 »
Naja, dann hast Du aber auch schon anfangs die Parameter festgelegt und musst sie auch übergeben.
Ich sehe hier immer noch nicht den Bezug zur ursprünglichen Frage  ;)

Bernhard

Glombi

  • Gast
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #8 am: 21.09.04 - 19:39:47 »
Was die ursprüngliche Frage betrifft: Ich wüsste nicht, wie man überladenene Subs in LotusScript hinbekommt  ???
Beim Speichern meckert der Compiler rum. dass Parameter fehlen.

Also muss man eine neue Sub, sprich Methode implementieren oder alle aufrufenden Scripts um den Parameter erweitern. Letzteres geht nur, wenn man weiß, wo sich solche Aufrufe befinden. Und da hilft gewiss ein Tool wie Analyser.

Andreas

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #9 am: 21.09.04 - 19:46:26 »
Die "vergessene Funktion" sprich ihr Aufruf meldet sich dann schon ;-) Wenn man ein so umfangreiches Programm hat, dass einem die Übersicht verloren gehen kann, gibt es hierfür ja entsprechende Tools wie Teamstudio Analyzer.

Unsauber: Eigentlich will man ja eine neue, erweiterte Funktion. Das alte Ding bleibt aber drin, anstatt entfernt zu werden. Der nächste Programmierer blickt das jetzt vielleicht nicht mehr - oder man selber auch nicht mehr und ruft dann mal die eine und mal die andere auf.
"Ordnung und Sauberkeit im Schlachthaus" erfordern erstmal Mehraufwand, machen sich dann aber später bezahlt.

Hi Bernhard,

da kann ich dir nur voll und ganz zustimmen. Nach Torians Methode wird der Code immer unübersichtlicher. Ich möchte dann die Datenbank nicht warten müssen. Irgendwann blickt man überhaupt nicht mehr durch welche Funktion denn nun eigentlich die gültige ist.

Die Tools von TeamStudio sind für so Sachen optimal geeignet. Der Analyzer zu Dokumentationszwecken und der Configurator um eben solche Suchen-und-Ersetzen - Dinge zu erledigen. sie sind zwar nicht ganz billig, aber bei grösseren Projekten rechnet sich das sehr schnell.

Axel


@hOtze

Optionale Parameter sind in Script nicht möglich.

 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #10 am: 21.09.04 - 20:06:58 »
Zitat
und der Configurator um eben solche Suchen-und-Ersetzen - Dinge zu erledigen

Das hatte ich auch schon geschrieben (aber dann rechtzeitig wieder gelöscht ;-)  - der Configurator kann ja nicht austauschen, wenn sich diie Übergabeparameter ändern. Aber der Analyzer hilft schon gigantisch weiter - so ein cooles Teil ! Das Geld lohnt wirklich !

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #11 am: 21.09.04 - 20:26:05 »
...- der Configurator kann ja nicht austauschen, wenn sich diie Übergabeparameter ändern.

Stimmt. Aber man kann zumindest nach der Funktion suchen und die Änderungen manuell vornehmen. So ist die Gefahr des Vergessens geringer.



Axel


Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #12 am: 21.09.04 - 20:30:51 »
Klar, das hatte ich jetzt (beim zu schnellen Posten) übersehen, Axel: Man kann ja nach dem Auffinden von Fundstellen auch noch manuell Änderungen vornehmen. Ergo: Funktionsnamen suchen und dann den fehlenden Parameter im Configurator anhängen, oder eben den Analyzer hernehmen und mit dessen Hilfe das Vorkommen suchen und austauschen.

Es führen viele Wege nach Rom  ;)  Der des Configurators ist kürzer  ;D

Bernhard

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #13 am: 22.09.04 - 07:46:28 »
Eine Möglichkeit wäre noch die Parameter in einer Liste zu speichern und der Funktion einfach die Liste zu übergeben. Allerdings braucht es dann einigen Aufwand, die Parameter wieder auszulesen  :P
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #14 am: 22.09.04 - 09:43:11 »
Das mit dem "überall ersetzen" hat natürlich besonders bei Klassen (und darum geht es ja hier) so seinen Haken: Klassen sind ja dafür geeignet, wieder verwendet zu werden, und spätestens, wenn so eine Klasse in mehreren Applikationen verwendet wird, wird es kritisch mit dem Aendern der Funktions-Signatur, und dann wird der hier vorgeschlagene Weg mit einer neuen Funktion und die Aenderung der alten Methode dahin, dass man die neue mit einem Default-Wert aufruft, schon ganz schön praktisch, dabei bleibt die Abwärtskompatibilität erhalten.

Gerade wenn es um Klassen geht, kann man natürlich auch einen anderen Weg gehen, indem man eine neue Klasse erstellt, welche von der ursprünglichen erbt, dabei ist allerdings in LS das Problem des nicht vollständig implementierten Overloadings - wie schon erwähnt - hinderlich.

Wie übblich dieses Verfahren übrigens ist, zeigt ein Blick in fast jedes beliebige API: da findet man häufig Funktionen, die am Ende des Namens ein Ex oder Extended aufweist: Nichts anderes, als eben solche Funktionen, die wie oben beschrieben mit mehr Parametern und Funktionalität neu implementiert wurden. Findet man sowohl in der Win-API wie auch in der Notes-API
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Torian

  • Frischling
  • *
  • Beiträge: 3
  • Ich liebe dieses Forum!
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #15 am: 22.09.04 - 10:06:23 »
Entschuldigt, ich bin neu hier, weshalb ich mich auf die Lösung eines Problems konzentriert habe.

Besonders nett seid ihr hier nicht, oder?

Wer benutzt in Notes Projekten mehr als 150 Klassen innerhalb von Notes?

Ich warte und entwickle in einem solchen System.

MfG

Axel Schindler


Hallo,

das geht mit einem Trick.

Function xy(x as String) As Integer
      xy = xyz(x, "")
end Function

function xyz(x As String, z as Variant)

end function

So kannst du eine neue Funktion mit einem weiteren Parameter erstellen und die alte Funktion beibehalten. In der alten Funktion rufst du die neue auf und setzt den neuen Parameter auf eine festen Wert.

 ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #16 am: 22.09.04 - 10:10:54 »
Wer ist denn hier nicht nett ?

Bernhard

Driri

  • Gast
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #17 am: 22.09.04 - 10:11:12 »
Entschuldigt, ich bin neu hier, weshalb ich mich auf die Lösung eines Problems konzentriert habe.

Besonders nett seid ihr hier nicht, oder?

...

Doch, eigentlich sind wir hier alle ziemlich nett, da gibts noch ganz andere Formen. Der Umgangston hier erscheint manchmal nur ein wenig rau, ist aber eigentlich gar nicht so gemeint.

Wenn Bernhard richtig böse wird, dann merkt man das auch  ;D

Offline hOtze

  • Aktives Mitglied
  • ***
  • Beiträge: 159
  • Geschlecht: Männlich
  • .:[gEHt nIt???? gIBTs nIt!!!!]:.
Re:Optionale Übergabewarte in einer Funktion .... geht das?
« Antwort #18 am: 22.09.04 - 10:26:18 »
Morgen Jungs,

vielen dank für die vielen Antworten. Scheint wohl tatsächlich keine möglichkeit zu geben. Hab auch mal ein wenig im LDD geforscht ..... so ein dreck.

Die möglichkeit einen leer String als Parameter zu übergeben war mir auch bekannt, so machen das die Kollegen hier in der Firma auch .... aber finde das nit so prall .... da  ich ja dann trozdem alle Funktionsaufrufe suchen müßte..... klar wenn ich diese Analyzer hätte ging das auch noch ... ;) aber leider haben wir denn hier nit.

Hm hoffe echt das die bei der neuen Notes Version sich mal en bissel mehr um die "Lotus Script Klassen Funktionen" kümmern.  Denn das letten einer klasse in den declaration ist ja schon schrecklich, ... naja aber das kennt ihr ja auch ;)

Würde mich auch ma intressieren wer hier nit nett is?!

@koehlerbv
hehe recht haste Programm Plannung wäre am besten .... aber wenn der Anwender alle Tage seine vorgaben ändert, fällt das schwer... nach dem Motto:
"Mach ma gerad, ich brauch ma schnell!" .... *argh*




...........::]hOtze[::...............................................

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz