Domino 9 und frühere Versionen > Entwicklung

@GetMembers in Script gesucht

<< < (2/5) > >>

TMC:
Hmm, ja, klar.

Danke, trotzdem bin ich von Natur aus faul, ich dachte es hätte vielleicht jemand sowas schon mal gemacht  ;)
Ansonsten mache ich es selber und stell es dann hier rein.

koehlerbv:
Hallo, Matthias,

ich bin mir noch nicht sicher, ob ich jetzt alle Fälle abgedeckt habe ... Auf jeden Fall ist der Funktion der Datentyp (relativ) egal, zurückgegeben wird auf jeden Fall ein Array (EMPTY, falls kein Result oder ein Fehler aufgetreten ist oder falsche Parameter übergeben wurden).

HTH,
Bernhard

PS: Die Routine "ErrorHandler" muss man sich natürlich nach eigenen Bedürfnissen selber schreiben ...


--- Code: ---Function ArrayGetMembers (vValues As Variant, iStartPos As Integer, iMembers As Integer)
     ' Purpose:      Retrieve from position iPosition iMembers from the given array
     ' Arguments:
   '               vValues - the given array
   '               iPosition - the first element to retrieve (0 is the index of the first element)
   '               iMembers - the numbers of elements from the array to retrieve
     ' Returns:      The array without the given value to remove, empty, if there is no value to return !
     ' Created by:     Bernhard Koehler on 24.04.2004            Modified by:

   
   Dim vResult () As Variant            'The resulting array
   Dim vEmpty As Variant            'In case of errors / wrong parameters: An empty array
   Dim iLoop As Integer
   Dim iLastPos As Integer            'The real number of elements to retrieve
   
   On Error Goto ErrorRoutine
   
   ArrayGetMembers = vEmpty         'The default result (an empty variant)
   
   If Isempty (vValues) Then
      ArrayGetMembers = vEmpty
      Exit Function
   End If
   
   If Isscalar (vValues) Then
      If iStartPos = 0 Then
         Redim vResult (0 To 0)
         vResult (0) = vValues
         ArrayGetMembers = vResult
         Exit Function
      Else
         ArrayGetmembers = vEmpty
         Exit Function
      End If 'of "iPosition = 0"
   End If 'of "Isscalar (vValues)"
   
   If iStartPos > Ubound (vValues) Then
      ArrayGetMembers = vEmpty
      Exit Function
   End If
   
   If (iStartPos + iMembers) - 1 > Ubound (vValues) Then
      iLastPos = Ubound (vValues) - iStartPos
   Else
      iLastPos = iMembers - 1
   End If
   
   Redim vResult (0 To iLastPos)
   
   For iLoop = 0 To iLastPos
      vResult (iLoop) = vValues (iStartPos + iLoop)
   Next
   
   ArrayGetMembers = vResult
   
   Exit Function
   
ErrorRoutine:
   Call ErrorHandler ("ArrayGetMembers")
   Exit Function
   
End Function
--- Ende Code ---

TMC:
Hi Bernhard,

cool, vielen Dank !!

Ich habe
a) Deinen Code erfolgreich getestet
b) die function auch so nochmal durchgesehen

Fazit: Es sollten so alle Fälle abgebildet sein die auftauchen könnten. Es gibt also nix verbesserungswürdiges :-) (höchstens - nice to have - die Function-Beschreibung, da würde ich noch @getmembers reinbringen).

Ist eine tolle Umsetzung!

Many thanks,
Matthias

koehlerbv:
Very gern geschehen ;-)
Wenn Du noch was findest (hier gibt es ja jede Menge Möglichkeiten, was die Parameter und die Datentypen angeht), lass es mich bitte wissen.

Was die Funktions-Beschreibung angeht und en Verweis auf @GetMembers: Da habe ich mich jetzt etwas schwer getan - die @function ist ja undokumentiert  ;D

Bernhard

TMC:

--- Zitat von: koehlerbv am 24.04.04 - 21:52:00 ---Was die Funktions-Beschreibung angeht und en Verweis auf @GetMembers: Da habe ich mich jetzt etwas schwer getan - die @function ist ja undokumentiert  ;D
--- Ende Zitat ---

 ;D
Yoo, Du hast Recht :-)
Erst habe ich auch überlegt, das gleich über Evaluate zu lösen, aber da undokumentiert ziehe ich eine Script-Lösung vor :-)
Egal, ich würde das @getmembers trotzdem reinbringen - ist aber mehr "Geschmacksfrage", die Function selbst funktioniert ja prima  :D

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln