Domino 9 und frühere Versionen > ND8: Entwicklung

Optionale Methoden Parameter, die nicht optional sind

(1/1)

flaite:
Hi,

find ich echt doof.
Da benutzt man in der Lotus-Script Api neue Funktion und selten funktioniert da mal eine wies in der Doku beschrieben steht.
Nehmen wir die database.Sign Funktion.
Sehr praktisch. Damit kann man einzelne oder mehrere Notes mit der aktuellen NoteID signieren.


--- Code: ---Dim s As New NotesSession
Set db = s.CurrentDatabase
Set nc = db.CreateNoteCollection(False)
nc.SelectDatabaseScript = True
Call nc.BuildCollection
strNodeIdDbScript = nc.GetFirstNoteId
If Not nc.GetNextNoteId(strNodeIdDbScript) ="" Then
Msgbox "More than 1 NodeId found. exiting code"
Exit Sub
End If

Call db.Sign(DBSIGN_DOC_ALL, False, strNodeIdDbScript, True)
'Call db.Sign(strNodeIdDbScript, True)

--- Ende Code ---
Das hier holt sich etwa das Database-Skript über NodeCollection und signiert das dann. Funktioniert auch.
Nur steht eben in der Dokumentation, dass alle Parameter optional sind.
Der erste Parameter ist eine Integer Konstante, der zweite ein Boolean, der dritte ein String und der vierte wieder ein Boolean. 
Theoretisch müsste das also machbar sein. Bei 3 String-Parametern wär das zum Bleistift mit der Optionalität ein Problem.
Und was ist, wenn man die ersten beiden Parameter  weglässt?
Man bekommt eine not a valid design constant Fehlermeldung.  ::)
Wenn man sich dann dazu zwingt die "optionalen" Parameter mit anzugeben, funktioniert es plötzlich.

Es sind diese Kleinigkeiten.

Axel    

koehlerbv:
Mit
Call db.Sign (, , strNodeIdDbScript, True)
sollte das aber funktionieren. Einen (leeren) Platzhalter muss man schon angeben, sonst könnte bei "optionalen Parametern" ja sonstwas herauskommen, wenn die Funktion selbst bestimmt, was da gemeint und was weggelassen wurde.

Bernhard

flaite:
Echt  ??? Das wusste ich nicht. Kompilieren tut das mit Call db.Sign (, , strNodeIdDbScript, True)
Versteh aber nicht ganz warum.
Bei Set notesDocument = notesView.GetDocumentByKey( keyArray [, exactMatch% ] )
kann ich doch auch
notesView.getDocumentByKey(keyArray) schreiben und nicht
notesView.getDocumentByKey(keyArray,)

Alle genannten Variablen sind von unterschiedlichen Datentypen. Also müßte der Compiler - von meinem zugegeben eher kursorisch-theoretischen Verständnis von Compilern - in der Lage sein, die Variablen per Datentyp auf die richtigen Argumente der Methode zu mappen.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln