Das Notes Forum

Lotus Notes / Domino Sonstiges => Projekt Bereich => Thema gestartet von: TMC am 15.11.03 - 20:54:51

Titel: @Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 20:54:51
Hi,

immer mal wieder stoße ich auf die Frage, wie ich denn z.B. ein @Unique in Lotus Script abbilden kann.

Daher mache ich mal ein neues Projekt hier auf, in der Hoffnung, dass sich das ganze nach und nach füllt.

Ich fange mal an:

@ReplaceSubstring:

Code
Function strReplace(Byval target As String, Byval rfrom As String, Byval rto As String) As String
   Dim pos As Long, lastpos As Long
   pos = Instr(target, rfrom)
   lastpos = 1
   Do Until pos = 0
      strReplace = strReplace & Mid$(target, lastpos, pos-lastpos) & rto
      lastpos = pos + Len(rfrom)
      pos = Instr(lastpos, target, rfrom)
   Loop
   strReplace = strReplace & Mid$(target, lastpos)
End Function

@Unique:

Infos von der Quelle (Sandbox Tipp DB):
Zitat
Suppose you have built an array that may have duplicate items, and now you want to "clean up" the array by eliminating the duplicates.  The obvious way to do this is to loop through the array and build another array without the duplicates.  
An alternative method is to build a list array where each listtag is the value for the desired array.  (Remember, since we only need the listtag from the list array the value that the elements of the array are set to is irrelevant - in the function we set them to 1.)  After building the list array, loop through the list and pull the listtag values out and write them to the final array.  This prevents dupes from getting into the array, and eliminates the need for any REDIMs.
Here is button demonstrating this concept.  This button uses a LotusScript function called "Unique" to perform the same operation that @Unique(list) performs, using the technique described above.

Button-Code:
Code
Sub Click(Source As Button)
     Dim newitem$, reslist$, ulist As Variant
     newitem = "Notes is kewl"
     x = 0
     
     REM prompt the user for items for the array till they quit
     Do While newitem <> ""
          If newitem <> "" Then
               Redim Preserve slist(x) As String
               REM InputBox[$] ( prompt [ , [ title ] [ , [ default ] [ , xpos , ypos ] ] ] )
                 newitem = Inputbox$("Enter another item to add to the list." & Chr$(10) & "Click Cancel when you are done.", "Enter Item", newitem)
               slist(x) = newitem
               x = x + 1
          End If
     Loop
     
     REM run the array through the unique function
     ulist = Unique(slist)
     
     REM Now set up the result so it can be displayed to the user
     Forall u In ulist
          reslist = reslist & Chr$(10) & u
     End Forall
     Msgbox "The unique list is:" & reslist,, "Unique Result"
End Sub

Function Code
Code
Function Unique(a) 
     Dim data List As Integer
     Dim i%, n%
     
     REM test to see if a is an array; if not, return it
     If Not(IsArray(a)) Then
           Unique = a
           Exit Function
     End If

     For i=Lbound(a) To Ubound(a) 
          data( Cstr(a(i)) ) = i 
     Next
     
     REM This takes the new list and puts it back into an array
     n = 0
     Redim newarray(0 To Ubound(a)-Lbound(a)) 
     Forall z In data
          newarray(n) = a(z) 
          n = n + 1
     End Forall
     Redim Preserve newarray(0 To n-1) 
     
     REM This returns the new array
     Unique = newarray
End Function


TMC

P.S.: Sollte es schon eine Auflistung im World Wide Web geben, bitte um Info, dann schließe ich das wieder
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:05:42
Damit nicht gleich die Frage aufkommt, "wie Formel in Script verwenden":

Syntax

variant = notesSession.Evaluate( formula$, doc )

variant: Das Rückgabewert. Ist ein "Skalar"-Wert.
formula$: String. Eben die Formel
doc: NotesDocument. Der Formelkontext. Darf nicht null sein.


TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:15:13
@RightBack

Text der Quelle:
Zitat
Similar to the @RightBack function, RightBackArr takes a string scalar or array and a search string or numeric position, and returns everything to the right of the last occurrence of the search string. RightBack function is similar but only works on scalars. In R5, you can use StrRightBack instead of RightBack if your position argument is a string.

Für R5 und höher:
Code
Function RightBackArr(src, pos, Byval flags As Integer)
   If Isarray(src) Then
      Dim i As Integer
      Redim result(Lbound(src) To Ubound(src))
      For i = Lbound(src) To Ubound(src)
         result(i) = RightBackArr(src(i), pos)
      Next
      RightBackArr = result
   Elseif Datatype(pos) = 8 Then
      RightBackArr = StrRightBack(src, pos, flags)
   Else
      RightBackArr = Mid$(src, pos)
   End If
End Function

Für R4 und höher:
Code
Function RightBack(Byval src As String, pos) As String
   If Datatype(pos) = 8 Then
      ' position is a string.
      If pos = "" Then Exit Function
      Dim epos&, lpos&
      epos = Instr(src, pos)
      Do Until epos = 0
         lpos = epos
         epos = Instr(epos + Len(pos), src, pos)
      Loop
      If lpos > 0 Then
         RightBack = Mid$(src, lpos+Len(pos))
      End If
   Else
      RightBack = Mid$(src, pos)
   End If
End Function

Function RightBackArr(src, pos)
   If Isarray(src) Then
      Dim i As Integer
      Redim result(Lbound(src) To Ubound(src))
      For i = Lbound(src) To Ubound(src)
         result(i) = RightBack(src(i), pos)
      Next
      RightBackArr = result
   Else
      RightBackArr = RightBack(src, pos)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:17:13
@LeftBack

Text der Quelle:
Zitat
Equivalent to @LeftBack except that it doesn't handle lists. Intended for use in R4 apps that can't use StrLeftBack.
Note: StrLeftBack can only search for strings. This function can take a string or a numeric position, like @LeftBack.

Script:

Code
Function LeftBack(Byval src As String, pos) As String
   If Datatype(pos) = 8 Then
      If pos = "" Then Exit Function
      Dim epos&, lpos&
      epos = Instr(src, pos)
      Do Until epos = 0
         lpos = epos
         epos = Instr(epos + Len(pos), src, pos)
      Loop
      If lpos > 0 Then
         LeftBack = Mid$(src,1, lpos-1)
      End If
   Else
      LeftBack = Mid$(src, pos)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:21:00
@Replace
Code
Function atReplace(src As Variant, from_list As Variant, to_list As Variant) As Variant
' Replace in src all occurrences of an item in from_list with the corresponding element of to_list.
   ' Resembles the macro language @Replace function.
   Dim i%
   If Isarray(src) Then
      Redim result(Lbound(src) To Ubound(src))
      For i = Lbound(result) To Ubound(result)
         result(i) = atReplace(src(i), from_list, to_list)
' Note: we expect the elements of Replace to be simple strings, but this will also work with an array of arrays.
      Next
      atReplace = result
   Elseif Isarray(from_list) Then
' The "from" argument is an array; compare each element of the array against the scalar value src.
      For i = Lbound(from_list) To Ubound(from_list)
         If src = from_list(i) Then
' If a match is found, get the corresponding element of the "to" list (null string if no corresponding element).
            If Isarray(to_list) Then
               If Ubound(to_list) < i Then
                  atReplace = ""
               Else
                  atReplace = to_list(i)
               End If
            Elseif i = 0 Then
               atReplace = to_list
            Else
               atReplace = ""
            End If
            Exit Function
         End If
      Next
      atReplace = src
   Elseif from_list = src Then
      If Isarray(to_list) Then
         atReplace = to_list(Lbound(to_list))
      Else
         atReplace = to_list
      End If
   Else
      atReplace = src
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:21:48
@Count
Code
Function atCount(s$, k$) As Long
   Dim p&, r&
   p = 1
   atCount = 0
   While p>0
      r = Instr(p, s$, k$)
      If r>0 Then
         atCount = atCount + 1
         p  =  r + Len(k$)
      Else
         p = 0
      End If
   Wend
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:22:21
@Explode
Code
Function atExplode(Byval s$, Byval div$) As Variant
   Redim result(0 To 0) As String
   Dim i%, pos&, oldpos&, skip&
   oldpos = 1
   skip = Len(div)
   pos = Instr(s, div)
   Do Until pos = 0
      Redim Preserve result(0 To i+1)
      result(i) = Mid$(s, oldpos, pos-oldpos)
      i = i + 1
      oldpos = pos + skip
      pos = Instr(oldpos, s, div)
   Loop
   result(i) = Mid$(s, oldpos)
   atExplode = result
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:25:20
@Implode

Code
Function atImplode(s, div As String) As String
   If Isarray(s) Then
      Dim i%
      atImplode = s(Lbound(s))
      For i = Lbound(s)+1 To Ubound(s)
         atImplode = atImplode & div & s(i)
      Next
   Else
      atImplode = Cstr(s)
   End If
End Function

@ReplaceSubstring

Code
Function atReplaceSubstring(source As Variant, repl As Variant, replacewith As Variant) As Variant
' Written 24 Sept 1996 by Andre Guirard.
   Dim tTo As Variant, tFrom As Variant
   Dim i&, j&
   
' If the search string and replacement are not arrays, make them one element arrays; this makes the
' subsequent code simpler.
   If Isarray(repl) Then
      tFrom = repl
   Else
      tFrom = SingleElementArray(repl)
   End If
   If Isarray(replacewith) Then
      tTo = replacewith
   Else
      tTo = SingleElementArray(replacewith)
   End If
   
' If the main input is an array, recursively process each element and return the results as an array.
   If Isarray(source) Then
      Redim result(Lbound(source) To Ubound(source)) As Variant
      For i = Lbound(source) To Ubound(source)
         result(i) = atReplaceSubstring(source(i), tFrom, tTo)
      Next
      atReplaceSubstring = result
   Else
      Dim res$, src$
      src$ = source
      For i = 1 To Len(src$)
' Scan the list of search strings to see whether any of them is present at position i in the source string.
         For j = Lbound(tFrom) To Ubound(tFrom)
            If tFrom(j) = Mid$(src$, i, Len(tFrom(j))) Then
               Exit For
            End If
         Next
' If a match was found, replace it in the output with the corresponding "replacewith" entry.
         If j <= Ubound(tFrom) Then
            res$ = res$ + tTo(min(Ubound(tTo), j))
            i = i + max(0, Len(tFrom(j)) - 1)
  ' shift the input pointer past the end of the matching string so we don't match another string in the middle of it.
         Else
' Otherwise, copy over the one character at position i.
            res$ = res$ + Mid$(src$, i, 1)
         End If
      Next
      atReplaceSubstring = res$
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 15.11.03 - 21:26:50
Well, in R5 und nochmal in ND6 sind eine ganze Reihe solcher Sachen in Script aufgetaucht, zum Bleistift:

Removes duplicate elements from an Array.
Syntax
ArrayUnique(sourceArray [,compMethod ])



Replaces specific words or phrases in a string with new words or phrases that you specify.
Syntax
Replace(sourceArray as Variant, findArray as Variant, replacementArray as Variant[, start as Integer[, count as Integer[, compMethod as Integer]]]) as Variant



Die ND6-Designer-Hilfe hat häufig (leider nicht immer) eine Cross-Language-Section, so dass man diese Aequivalente findet.

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 15.11.03 - 21:26:58
TMC, der Rückgabewert ist genau nicht skalar, sondern ein Array (ein- oder mehrdimensional).

Dim v As Variant
v = Evaluate ({@Left ("Das ist ein Test"; 16)})

Msgbox v ergibt nun einen Fehler, es muss ja
Msgbox v (0) heissen.

@TMC:
ReplaceSubstring wie von Dir angegeben ist sicher die im Web häufigst verbreitete Variante, entspricht aber keineswegs dem @ReplaceSubstring - denn dieses verarbeitet auch Arrays und nicht nur Strings. Hier im Forum gibt es m.E. schon eine "richtige Umsetzung".

Die Idee einer wirklich sicheren (!) Umsetzung cooler @functions in einer Art wie Deine "Schlaufen"-Doku von AtNotes hat aber was !
Dies sollte aber unter keinen Umständen auf Nachbildungen von @functions begrenzt sein, sondern um immer wieder benötigte Funktionen wie "IsValueEmpty" oder "CompareValues" oder oder ergänzt werden !

Ich wäre auf jeden Fall mit dabei ;-)

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:27:34
@Name([abbreviate]...)

Code
Function UIDAbbr(ids As Variant)
' This function performs roughly the same task as @Name([abbreviate]...);
' i.e., given an argument which is a string or array of strings, it returns
' the same string or array with the CN=, OU=, etc. stripped off of every
' hierarchical level of what is assumed to be a Notes username.
'
' Example: UIDAbbr("CN=Andre P. Guirard/OU=Nav/O=Hoptoad/C=US")
'   returns "Andre P. Guirard/Nav/Hoptoad/US"
   If Isarray(ids) Then
      Dim i%
      Redim r(Lbound(ids) To Ubound(ids)) As String
      For i = Lbound(ids) To Ubound(ids)
         r(i) = UIDAbbr(ids(i))
      Next
      UIDAbbr = r
   Else
      UIDAbbr = Fulltrim(atReplaceSubstring(atImplode(atWord(atExplode(atWord(Cstr(ids), "<@", 1), "/"), "=", -1), "/"), """", ""))
   End If
End Function

@Name([CN]...)

Code
Function UIDCn(ids)
' This function performs roughly the same task as @Name([CN]...);
'
' Example: UIDCn("CN=Andre P. Guirard/OU=HiRollers/O=Gossamer/C=US")
'   returns "Andre P. Guirard"
'
' If passed an array, it will process each element separately and return an
' array as a result.
   If Isarray(ids) Then
      Dim i%
      Redim r$(Lbound(ids) To Ubound(ids))
      For i = Lbound(ids) To Ubound(ids)
         r$(i) = UIDCn(ids(i))
      Next
      UIDCn = r$
   Else
      UIDCn = Trim(atReplaceSubstring(atWord(atWord(Cstr(ids), "/<@", 1), "=", -1), """", ""))
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:30:55
Weiterer Code zu @Unique

Ich hau jetzt erstmal alle Functions rein die ich so finde als Diskussionsbasis :-)

Könnte auch was doppelt werden .......


Code
Function atUnique(a, Byval caseflag%) As Variant
' a is an array. The return value is the same array with duplicate elements removed.
' Note: this is a case sensitive comparison. A non-case sensitive version of this
' function is available in the @NCFunctions script library. Non-text elements are
' considered to be duplicates if their text representations match another element,
' e.g. the number 5 is considered a duplicate of the string "5".
' The caseflag argument is True for a case-sensitive comparison, False for case sensitive
   Dim data List As Integer
   Dim i%, n%
   
   For i=Lbound(a) To Ubound(a) ' don't assume that the array starts at index 0.
      If caseflag Then data( Cstr(a(i)) ) = i Else data( Lcase(Cstr(a(i))) ) = i
       ' remember array index of original element.
   Next
   
' Take the new list and put it into a new array
   Redim newarray(0 To Ubound(a)-Lbound(a)) ' initially dimension array to maximum size we might need.
   Forall z In data
      newarray(n) = a(z) ' copying from the original array instead of the list tags lets us preserve the original datatype of the elements.
      n = n + 1
   End Forall
   Redim Preserve newarray(0 To n-1) ' redimension the array only once, after we know how large it should be.
   
   atUnique = newarray
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:31:32
@Left

Code
Function atLeft(str_or_list, position, Byval flags%)
 ' This reproduces the @Left function of the Notes macro language.
 'Syntax: atLeft(str_or_list, position)
' where:
'   str_or_list is a string or string array.
'   position is either a number or a string.
'  
'  If  'position' is a number and str_or_list is a string, the first 'position' characters
'  of the str_or_list are returned, or if str_or_list contains fewer than 'position'
'  characters, the entire string.
'
'  If  'position' is a string and str_or_list is a string, the result is the portion of
'  str_or_list that precedes the first occurence of the string 'position' (case sensitive
'  search).  If 'position' is not found, the empty string is returned.
'
'  If str_or_list is an array, the return value is an array where each element contains
'  the result of the Left function on that element.
   
   ' arguments: str_or_list: string or array of strings to search in.
   ' position: integer or string: position in str_or_list if numeric, else string to search for in str_or_list
   ' flags option added for R5 - case/pitch sensitivity (see Strright function in developer help).
   ' return value: same type as str_or_list, containing the portion (of each element, if an array) to the left of 'position'
   Dim seekval, c%
   If Isarray(position) Then
      seekval = position(Lbound(position))
   Else
      seekval = position
   End If
   
   If Isarray(str_or_list) Then
      Redim result(Lbound(str_or_list) To Ubound(str_or_list))
      If Vartype(seekval) <> 8 Then
         For c = Lbound(result) To Ubound(result)
            result(c) = Left(str_or_list(c), seekval)
         Next
      Else
         For c = Lbound(result) To Ubound(result)
            result(c) = Strleft(str_or_list(c), seekval, flags)
         Next
      End If
      atLeft = result
   Elseif Vartype(seekval) <> 8 Then
      atLeft = Left(str_or_list, seekval)
   Else
      ' change for R5: use Strleft instead of Instr and Right
      atLeft = Strleft(str_or_list, seekval, flags)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:32:28
@Repeat

Code
Function atRepeat(s, Byval count As Integer)
' Given a string and a count, Repeat returns a string which is
' the argument value repeated "count" times.  Passed an array,
' it returns an array where each element is the corresponding
' source element repeated "count" times.
   Dim i%
   If Isarray(s) Then
      Redim hark(Lbound(s) To Ubound(s)) As String
      For i = Lbound(s) To Ubound(s)
         hark(i) = atRepeat(s(i), count)
      Next
      atRepeat = hark
   Elseif Vartype(s) = 8 Then
      Select Case Len(s)
      Case 0:
         atRepeat = "" ' empty string repeated any number of times is still empty.
      Case 1:
         atRepeat = String(s, count) ' This is much faster than using a loop.
      Case Else
         atRepeat = ""
         For i = 1 To count
            atRepeat = atRepeat & s
         Next
      End Select
   Else
      atRepeat = atRepeat(Cstr(s), count)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 15.11.03 - 21:33:11
Bernhard: Ist schon klar, wollte nur drauf hinweisen, dass es diese Funktionen gibt, viele Leute haben das eben übersehen, und wenn die eingebaute Funktion die geforderte Leistung erbringt (was nicht bei allen der Fall ist), ist sie zu bevorzugen, weil meilenweit schneller als irgendwas nachgebautes. Aber Du hast schon recht, es sind nicht immer Gleichsetzungen, sondern nur Teiläquivalente, aber dafür gibt es ja die Hilfe ......
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 15.11.03 - 21:33:33
Wenn wir 'ne Sammlung aufbauen, dann sollten die Sources aber ordentlich geschrieben werden und nicht so grauslig wie in den von Dir gefundenen Beispielen. Und ordentlich dokumentiert. Nach einem ersten Blick auf die zweite @ReplaceSubstring-Variante: Was passiert, wenn die Arrays unterschiedlich viele Elemente enthalten ?
Was demzufolge noch gemacht werden sollte: Ordentliche Testszenarien und -dokumentationen !

Was meint Ihr ?

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:34:02
@Min

Code
Function min(a,b)
   If a < b Then
      min = a
   Else
      min = b
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:34:37
@Max

Code
Function max(a,b)
   If a < b Then
      max = b
   Else
      max = a
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:35:43
@Right

Code
Function atRight(str_or_list, position, Byval flags%)
   ' arguments: str_or_list: string or array of strings to search in.
   ' position: integer or string: position in str_or_list if numeric, else string to search for in str_or_list
   ' flags option added for R5 - case/pitch sensitivity (see Strright function in developer help).
   ' return value: same type as str_or_list, containing the portion (of each element, if an array) to the right of 'position'
   Dim seekval, c%
   If Isarray(position) Then
      seekval = position(Lbound(position))
   Else
      seekval = position
   End If
   
   If Isarray(str_or_list) Then
      Redim result(Lbound(str_or_list) To Ubound(str_or_list))
      For c = Lbound(result) To Ubound(result)
         If Vartype(seekval) <> 8 Then
            result(c) = Right(str_or_list(c), seekval)
         Else
            result(c) = Strright(str_or_list(c), seekval, flags)
         End If
      Next
      atRight = result
   Elseif Vartype(seekval) <> 8 Then
      atRight = Right(str_or_list, seekval)
   Else
      ' change for R5: use Strright instead of Instr and Right
      atRight = Strright(str_or_list, seekval, flags)
   End If
End Function

@Word

Code
Function atWord(s, d$, i%)
   If Isarray(s) Then
      Dim j
      Redim r(0 To Ubound(s)-Lbound(s)) As String
      For j = 0 To Ubound(r)
         r(j) = atWord(s(j), d, i)
      Next
      atWord = r
   Elseif Len(d$) = 1 Then
      atWord = EasyWord(Cstr(s), d, i)
   Else
      atWord = Word(Cstr(s), d, i)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 15.11.03 - 21:36:32
Ja, eine wirklich saubere Sammlung von unterstützenden Funktionen, gut dokumentiert, gut getestet, das ist eine gute Sache, mache ich auch mit.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:37:36
@Trim

Code
Function atTrim(src, Byval options As Integer)
' src is either a string, or an array of strings.
' options is a set of bit flags corresponding to the constants defined above.  If the ATTRIM_TAB flag is set,
' we will treat tabs as whitespace, replacing them with spaces.  If ATTRIM_NEWLINE is set, newlines will
' be treated as whitespace.  And if ATTRIM_KEEP_NULL is set, null elements will not be removed from the
' array.
   Dim cc$, result$, i&, pos&
   If Isarray(src) Then
 ' recursively process each array element.
      Dim lim%
      lim = Lbound(src)
      Redim retval(lim To Ubound(src)) As String
      pos = lim
      For i = Lbound(src) To Ubound(src)
         result = atTrim(src(i), options)
         If result <> "" Or (options And ATTRIM_KEEP_NULL) Then
            retval(pos) = result
            pos = pos + 1
         End If
      Next
      Redim Preserve retval(lim To max(lim, pos-1))
      atTrim = retval
   Else
      Dim state%, whitespace%
      For i = 1 To Len(src)
         cc = Mid(src, i, 1)
' The string is scanned with a state machine.
'  State 0 means we have not yet encountered a non-whitespace character.
'  State 1 means the last character was non-whitespace.
'  State 2 means the last character was whitespace but there have been some non-whitespace.
         If (cc = " ") Then
            whitespace = True
         Elseif cc = Chr$(9) Then
            whitespace = (options And ATTRIM_TAB)
         Elseif cc = Chr$(10) Or cc = Chr$(13) Then
            whitespace = (options And ATTRIM_NEWLINE)
         Else
            whitespace = False
         End If
         Select Case state
         Case 0:
            If whitespace Then
            Else
               result = cc
               state = 1
            End If
         Case 1:
            If whitespace Then
               state = 2
            Else
               result = result + cc
            End If
         Case Else:
            If whitespace Then
            Else
               result = result + " " + cc
               state = 1
            End If
         End Select
      Next
      atTrim = result
   End If ' src is an array.
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:38:51
@EasyWord

Watt issn das? Poste es trotzem mal  ;D

Zitat
Function EasyWord(Byval Source$, Byval Seekk$, Byval pos%) As String
   ' source: a string from which a word is to be extracted.
   ' Seekk: a string containing the character used as word divisions.
   ' pos: which word out of 'source' you want. positive counts frol left to right; negative from right to left (e.g. -1 returns last word). 0 is illegal.
   Dim cpos&, tmp$
   If Pos > 0 Then
      ' if they've asked for other than word 1, throw away all prior to the pos-1st occurrence.
      If pos > 1 Then Source = Strright(Source, Seekk, 0, pos-1)
      cpos = Instr(Source, Seekk)
      ' if the search string occurs again, return all to the left of the search string. Else return entire string.
      If cpos = 0 Then
         EasyWord = Source
      Else
         EasyWord = Left(Source, cpos)
      End If
   Else
      If pos < -1 Then Source = Strleftback(Source, Seekk, 0, 1-pos)
      
      EasyWord = Strrightback(Source, Seekk)
      If EasyWord = "" And Source <> "" Then EasyWord = Source
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:40:36
@Begins

Code
Function atBegins(Byval a$, b)
   If Isarray(b) Then
      Dim i%
      For i = Lbound(b) To Ubound(b)
         If atBegins(a, b(i)) Then
            atBegins = True
            Exit Function
         End If
      Next
   Else
      atBegins = (Left(a, Len(b)) = b)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:41:23
@Word

Code
Function Word(Byval source$, Byval delims$, Byval wordnum%) As String
   ' source: a string from which a word is to be extracted.
   ' delims: a string containing one or more characters used as word divisions. Unlike EasyWord,
   '   this may contain multiple single-character delimiters.
   ' wordnum: which word out of 'source' you want. positive counts frol left to right; negative from right to left (e.g. -1 returns last word). 0 is illegal.
   Dim pos&, tmppos&, lastpos&, i&
   If wordnum > 0 Then
      pos = 1
      Do Until wordnum = 0 Or pos = 0
         lastpos = pos
         pos = 1
         For i = 1 To Len(delims)
            tmppos = Instr(pos, source, Mid$(delims, i, 1))
            If tmppos > 0 And tmppos < pos Then pos = tmppos+1
         Next
         wordnum = wordnum - 1
      Loop
      If pos = 1 Then
         word = Mid$(source, lastpos)
      Else
         word = Mid$(source, lastpos, pos-lastpos-1)
      End If
   Elseif wordnum < 0 Then
      Dim tmpstr$, remst$, laststr$
      remst = source
      Do Until wordnum = 0
         laststr = remst
         remst = ""
         For i = 1 To Len(delims)
            tmpstr = Strleftback(laststr, Mid$(delims, i, 1))
            If Len(tmpstr) > Len(remst) Then remst = tmpstr
         Next
         wordnum = wordnum + 1
      Loop
      pos = Len(laststr) - Len(remst)
      If pos > 0 Then Word = Strright(laststr, pos)
   End If
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:44:19
So :-)

Nun habe ich mal alles gepostet was so rumlag.....  ;D


Saubere Dokumentation: Da stimme ich voll und ganz mit Euch überein !!!

Diskussions-Stuff haben wir ja erst mal  ;)

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 15.11.03 - 21:49:49
Zitat
Ich hau jetzt erstmal alle Functions rein die ich so finde als Diskussionsbasis :-)

TMC, mach' das bitte nicht - das Zeugs ist bis jetzt fast alles gruselig. Und im Web gibt es noch viel, viel mehr davon. Lass uns ein ordentliches projekt aufsetzen und nicht jeden Schrott hier noch einmal veröffentlichen.
Und auf jeden Fall nicht nur auf @functions begrenzen, sondern "Nützliche Funktionen" als Überschrift setzen.

Eigentlich sollte vorher das Projekt "ErrorHandling" abgeschlossen werden, dann was nützen uns jetzt weitere functions ohne ein AtNotes-gerechtes ErrorHandling ?  ;-)

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 15.11.03 - 21:59:08
Zitat
TMC, mach' das bitte nicht - das Zeugs ist bis jetzt fast alles gruselig.
Sorry, dem war ich mir nicht ganz bewußt.Viel mehr war ich der Meinung, zu 90% läßt sich das nutzen.

Zitat
Lass uns ein ordentliches projekt aufsetzen und nicht jeden Schrott hier noch einmal veröffentlichen.
Na ja, da stellt sich halt die Frage "Wo fängt man an", "wo hört man auf".
Daher erschien es mir eigentlich sinnvoll, das ganze auf Umsetzungen von @Formulas einzugrenzen.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 15.11.03 - 22:13:24
Zitat
Na ja, da stellt sich halt die Frage "Wo fängt man an", "wo hört man auf".
Daher erschien es mir eigentlich sinnvoll, das ganze auf Umsetzungen von @Formulas einzugrenzen.

Hm, ich würde hier eher auf eine AtNotes-typische (also qualitativ hochwertige) Sammlung nützlicher, völlig applikationsunabhängiger Routinen setzen. @functions hat man i.d.R. leicht via Evaluate im Griff - oft aber zäh in der Codierung - pure LotusScript ist pflegeleichter. Aber bei weitem nicht jede @function ist für sowas interessant.

Das ganze Projekt wäre aber mit Vorsicht zu geniessen: Das ErrorHandling habe ich ja schon angesprochen, ausserdem bietet es sich sehr häufig an, von einer Funktion auf eine andere Bezug zu nehmen (sowas glaube ich vorhin auch in einer von Deinen gefundenen Routinen gesehen zu haben). Da wird dann auch die Einbindung interessant: Entweder "alles oder nix" oder "Jede Routine für sich alleine" ...

Und die Schreibe braucht natürlich auch einen Standard (wobei ich hier immer die mir als "Budapester Notation" bekannte bevorzuge) - sonst ist das schwer nachvollziebar / pflegbar.

Schauen wir mal, was daraus wird ;-)

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 15.11.03 - 23:55:50
TMC: tolle Arbeit.

Stimme mit Bernhard darin überein, dass man das weiterfassen sollte als @functions.

Eine wirklich gute Sammlung gibt es hier: http://www.openntf.org/projects/codebin/codebin.nsf/CodeByDate!OpenView
(falls ihr das nicht schon sowieso wisst).

Die Herausforderung ist nur die Klassifizierung. Wenn sich hierfür Leute finden würden...
Mir fällt adhoc ein:
- String-Funktionen
- Datums-Funktionen (Anton Tauscher hierzu nicht schlecht und von mir von Zeit zu Zeit geplündert).
- Validierungsfunktionen (fangen schon die Überschneidungen mit String an)

Wenn ihr das macht, bau ich ein schneller-als-der-Blitz Java-Swing Interface.
Suche:
- links eine Baumstruktur wie z.B. im Windows-Explorer.
- Beschreibungen können per Volltext durchsucht werden

Persistenz:
- Daten können in LoNo, xml, rdbms abgelegt werden

Handhabung:
- kopieren des codes über 1 Button-Click in die Zwischenablage.

Zusammenarbeit
- können meinen ungeborenen Tomcat-Server im Internet als zentrales, zugriffsgeschütztes Repository verwenden, mit dem die Clients neue code -Schnippsel replizieren. Die Alternative wäre P2P. Kann aber nicht absehen, wie aufwendig das ist.
 
... denke darüber schon länger nach.

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 16.11.03 - 00:05:09
Axel, die Sache nimmt Gestalt an ;-)
Wir sollten uns aber zunächst einen Plan aufmalen: Was, wie, Testverfahren, (nicht) erlaubte Abhängigkeiten.
Und wenn Du dann so ein Tool beisteuern könntest ... Das wird wohl was werden !

Eine gute Nacht wünscht
Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 00:44:23
o.k. hiers asci-gui prototype  ;D

****************************************************
SmartIcons: Speichern | Beenden | Copy-Code                              *
****************************************************
* Nav-Baum             *     Kategorien: gewählte Kats in Nav
*  Schachtelung       *    
* 1-4 Oberkat.         *     Name: Name
* pro Eintrag            *    
* (Einträge mit          *    Beschreibung
* 1 Oberkat. mgl.     *     Beschreibungsinhalt
* aber auch mit 4     *
*                              *     Code:
*                              *     if x then x end if
*                              *
*                              *
*                              *
*                              *
********************************************************

Muss aber dazu sagen, dass ich bis Weihnachten schon so ein ziemlich volles Programm habe.

So schwierig ist das nicht zu programmieren (4-6 Tage, dann dürfte schon was brauchbares da sein). Problem ist nur die 4-6 Tage zu haben.

Falls der Tomcat nicht da ist (hohe Wahrscheinlichkeit) geht die Replizierung von neuen Einträgen auch über einen halbautomatisierten Prozess wo per email xml-Dateien als Attachment ausgetauscht werden.

Gruß Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 08:00:36
ihr wisst schon, daß es bereits so ein Projekt gibt ??

http://www.atnotes.de/index.php?board=11;action=display;threadid=3173
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 09:31:26
... da sind sicher einige gute Ideen drin.

Ich bin wg Vorbereitung auf IBM.486-certi (Unified Modelling Language und Unified Process) leicht ideologisiert

(geh mal eben 1 von den 3 Krawatten suchen)
(http://www.smileys.nl/images/small/beweeg/22.gif)

Muß nun knallhart bemerken, dass in diesem Projekt einfach ein zielführender Vorgehensprozess fehlte, so dass ein fassbares Ergebnis herauskam.

Poste heute noch Vorschläge zu einem möglichst simplen und zielführenden Vorgehen. Keine Angst: Verzichte auf Theoretisiererei.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 09:53:42
<Fun>

Was? 486er Zertifizierung? ist das nicht ein paar Jahre zu spät? Ich denke, wir sind unterdessen bei Pentium "Tettares" (4) angelangt und ich warte darauf, dass es bald einmal einen Pentium "Pente" (5) geben wird       ;D


[soviel übrigens nebenbei auch zu der Behauptung von Intel, das Pentium ein Phantasiename sei ..... wers glaubt ..... ]

</Fun>
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 11:03:56
O.k. Unified Prozess (in Folge UP) ist ein iterativer, modularer Prozess mit Phasen.

Phasen sind: Konzeptualisierung, Entwurf, Konstruktion, Übergang

Modular heisst: Es gibt sehr viele Workflows, Planungsartefakte, etc.. Man benutzt aber nur, was man braucht.

iterativ heisst: Projekt wird in Iterationen (2 Wochen pro Iteration) abgewickelt. Vereinfachend gesprochen macht man in jeder Iteration alle Phasen. Die Konzeptualisierung ist also nicht unbedingt mit Iteration2 abgeschlossen. Vielleicht fällt uns beim Übergang noch Fehler in der Konzeptualisierung auf. Dann gibt es halt zu Anfang von Iteration26 eine neue Konzeptualisierungsphase.
Ich finde das zeitgemäss. In Zeiten wo unsere Kleinen immer in diesem Piesa-Test durchfallen, unsere Grossen Geld ausgeben, was sie gar nicht haben und unsere Mittleren als para-terroristische Chaotentruppen mit Krawatten SAP säuselnd in mittelständische Betriebe einfallen, kann man nicht erwarten, dass eine Konzeptualisierung irgendwann solide wie ein Fels ist.

Für die Konzeptualisierung benötigen wir ein Visionsdokument. Dort soll aufgeführt werden, was die stakeholder (=user) (= wir)  von dem System erwarten.

Vision, draft1
Introduction
Wir stellen uns ein code-repository für wiederkehrende Funktionalitäten im Rahmen von LotusDomino Programmierung vor.
Positioning
Business Opportunity:
less wurk, more fun

Problem Statement:
Bisherige code repositories sind meist Insellösungen von jedem selber. Die öffentlichen Repositories im Internet sind nicht so gut durchsuchbar.

Stakeholder description
User:
Leute, die Software Projekte mit LoNo machen
Motivation: wollen nicht so viel denken und tippen wollen und stattdessen lieber wiederkehrende Funktionalitäten aus dem Repository ziehen.

Product Overview

Summary of System Features
Die Funktionen sollen
- leicht wiederauffindbar sein (Kategorisierung, Volltextsuche über Beschreibgung)
- mit möglichst wenig Handgriffen zu kopieren sein
- die Funktionalitäten* sollen replizierbar sein
(dh in einem (semi-)automatischen Prozess soll stakeholderA von stakeholderB alle neue Funktionen* seit der letzten Replizierung anfordern können).



Gruss Axel

* um Begriffsverwirrungen für dieses Projekt (hier hat der Autor z.B. die Begriffe  Funktionen und Funktionalitäten nicht vernünftig abgegrenzt. Sind es Synonyme. Meinen sie was verschiedenes. who knows  ??? UP schlägt hierfür ein Projekt-Glossar vor.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 11:15:15
Räusper


Piesa-Test durchfallen
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 11:28:27
adelante, some brain storming, wer Spass hat soll posten:

Vorschläge:
- wiederverwendbare code-Schnippsel werden als sogenannte code-Dokumente (Datenstruktur) abgelegt.
Diese enthalten:
- eindeutige ID
- Kategorisierung
- Autor
- Datum der Erstellung
- Version
- Beschreibung
- Beschreibung der Verwendung
- code selbst
- andere Funktionen, die sie nutzen*

* Erläuterung:
manchmal ist es sinnvoll betimmte code-Bestandteile des codes von code Dokumenten in eigene Funktionen (und somit eigene code-Dokumente) auszulagern. Etwa, damit eine solche auf einem niedrigeren Level angesiedelte Funktionalität von 2 unterschiedlichen code-Dokumenten auf einem höheren Level benutzt werden. Die ids der code-Dokumente eines niedrigeren Levels müssen in code Dokumenten des höheren Levels eingetragen sein.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 14:50:54
Hi,

nachdem ich nun eine Nacht darüber geschlafen habe sehe ich es auch ähnlich wie Ihr es seht:
 - nicht nur auf @Functions einschränken
 - saubere Tests
 - einheitlicher Standard
 - auf einer strukturierten Plattform sauber abbilden (*wink zu Axel*  :))
 - Angaben Autor, Datum, Version, etc. (wie von Axel gelistet), zusätzliche Angaben ob/wie das Script getestet wurde
 - nur coole Codes aufnehmen, keine 0815 Einzeiler

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 16:04:05
stellt sich mir die Frage : "Was sind coole Codes ? "
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 17:29:08
Vielleicht so:
Schneide den Code aus ("Cut"), bringe ihn in den Kühlschrank, lasse ihn eine Weile drin, wenn Du ihn rausnimmst, ist er bestimmt cool. Ob Du ihn dann aufs Brot streichen könntest ("Paste"), weiss ich nicht.

ich ducke mich jetzt gleich wegen des Konjunktivs  ;D  
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 17:36:14
der Humor der Schweizer ist unschlagbar  :D
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 17:40:41
Also, weiss ich nicht, wie stark das generalisiert werden darf, dazu kommt, dass mein Pass nicht in Bern ausgestellt wurde ......

Na, der Ausdruck "cool" triggered bei mir meistens auch nicht unbedingt positive Gefühle, und so kommt es dann ab und an mal zu einer Parodie ......  :D
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 17:44:56
Zitat
nur coole Codes aufnehmen, keine 0815 Einzeiler

OK, cool ist ja bekanntlich relativ.

Ich meine:
Ein
Code
Function min(a,b)
   If a < b Then
      min = a
   Else
      min = b
   End If
End Function
müsste nicht aufgenommen werden.
Dafür schaut keiner in einer Code-Plattform etc. nach.

Coole Codes wären z.B.
 - eine Liste bereinigen (Leere Zeilen rausschmeißen, doppelte Werte raus,
   alphabetisch sortieren);
   sowas verwende ich bsp. in Setup-Docs wo man Kategorien vorgibt, wäre auch
   praktisch in Addressbooks wo in den Gruppen Namen eingetragen werden
 - Listen / Feldinhalte etc. in Windows-Zwischenablage kopieren; dabei noch
   der Funktion übergebbar, wie die einzelnen Werte getrennt werden sollen
   (@Newline, Semikolon, etc.)
u.v.m.

TMC

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 17:50:05
*Nachtrag*
Also cool im Sinne des DAU's
"hey, cool, hab hier zig doppelte Werte drin und ewig viele Leerzeilen, aber wenn ich auf den Button klicke ist alles purged..."

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 17:51:53
......    ah, ein Purgativ .....
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 18:00:41
das kommt ja auch ein bisschen auf die Zielgruppe an; ein Anfänger mag so seine  Schwierigkeiten haben einen Min / Max/ stdDev  Funktion zu schreiben

Auch solcher Code ist wichtig; möglicherweise kann man dan kategorisieren: absolute Beginner, professional, god user... wobei dann bei der letzten Kategorie keine  Ergebnissen angezeigt werden dürften

Was für den Einen selbstverständlich ist, ist es noch lange nicht für einen anderen; also sollte auch de bewährte Min /Max Code berücksichtigt werden.

Aber da ist das noch recht einfach. Wenn ich mir so die unterschiedlichen "ReplaceSubstring" anschaue; da sollte man sich schon für eine  entscheiden. Es darf halt nichts redundantes dabei sein.
Da stellt sich bei mir die Frage, was ist performanter ?? native LS oder auch ein @evaluate ?

Das muss man testen, ob das in allen Versionen verwendbar ist; und wenn, dann gibt es EINE freigegebene Version der Funktion oder Sub.

Und wenn die dann in Appl. eingesetzt wird, kann man die auch supporten

Ulrich
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 18:01:57
ich weiß zwar nicht was ein Purgativ ist aber wenigstens gehst Du nicht auf meine Anglizismen los... (z.B. purged)  ;D

Sonst bau ich hier mal ein @DBLookup ein zu http://vds-ev.de/denglisch/anglizismen/anglizismenliste.php (http://vds-ev.de/denglisch/anglizismen/anglizismenliste.php)

 ;)
TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 18:05:30
Zitat
hey, cool, hab hier zig doppelte Werte drin und ewig viele Leerzeilen, aber wenn ich auf den Button klicke ist alles purged...

also "cool" im Sinne von "Ey, Alder, krrass coding" oder so.

Getz check isch das   ;D
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 18:09:23
Kul ........  :D





Vielleicht sagt Dir Bernhard, was ein Purgativ ist, passt jedenfalls sehr gut zu Deinem Bleistift ....   :D
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Glombi am 16.11.03 - 18:09:24
Ich für meinen Teil halte es nicht für unbedingt nutzbringend, etwas in LotusScript nachzuprogrammieren, was einem die @Formelsprache bereits "schenkt" - zum Bleistift ein "@ReplaceSubstring".

Als Einstieg in die Evaluateonstheorie hier ein Link:
http://www-10.lotus.com/ldd/today.nsf/0/1b582ddee7c72e10852566ac005f0b99?OpenDocument

Bzgl. der Performance denke ich, dass Evaluate meistens schneller ist (ausser jemand hat da einen super Script-Algorithmus, welche dem "eingebauten" Algorithmus bzgl. Performanceüberlegen ist).

Andreas
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 18:09:25
@Ulrich:
Hmm, stimmt, eigentlich hast Du schon Recht.

Zum anderen begonnenen Projekt (http://www.free.dominoserver.de/computer/noteslibrary.nsf (http://www.free.dominoserver.de/computer/noteslibrary.nsf)):

Ich wußte vorher gar nicht dass es da schon was gibt;
Die Ansätze sind M.E. auch wirklich prima. Nur wird das wohl nicht (mehr) gelebt.

Vielleicht sollte man das zusammenfahren (dieses Projekt hier und das von damals).

Schön wäre in der Notes-DB noch ein Berechtigungskonzept, damit nicht nur 1 Person schreiben darf. 2-3 sollten es schon sein. Und mit Prüfroutine (z.B. auch: es kommt nix rein, wenn nicht vorher hier gepostet und getestet wurde).
Und die erwähnten Pflichtfelder (Autor, Version, etc.)

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 16.11.03 - 18:16:34
Andreas:
Das ist auch meine Meinung, das Nachprogrammieren von @Functions war solange sinnvoll, wie Evaluate noch massiven Einschränkungen unterlag.

Meine Taktik:
Gibt es in LS ein Aequivalent, das fast dasselbe tut? --> Use it

Sonst: Verwende Evaluate, ggf. mit Nacharbeit des Ergebnisses.
¨
Erst wenn auch das nicht möglich ist: ausprogrammieren.

Ausnahme: die LS-Ersatzfunktion für @Func ist sehr kurz und performant, so dass sie die Kosten des Aufstartens der @-Engine unterschreitet.

Ein Performance-Test ist bestimmt interessant.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 18:22:09
Zitat
Nur wird das wohl nicht (mehr) gelebt

schade eigentlich. Ich muss aber auch zu meiner Schnade gestehen, dass meine Aktivitäten dort arg zu wünschen übrig gelassen haben.

OK, es heißt ja "Reboot tut gut", also lasst uns noch einmal beginnen.
( unter Einbeziehung des bisher Geleisteten )

Ulrich
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 18:47:16
OK  ;)

Wer hat denn eigentlich Schreibrechte auf die DB?
Und gibt es irgendwo ein Template davon, dass man um die besagten Felder erweitern kann?

Ich würde sogar das nochmal neu starten (leere DB, und nur Functions etc. übernehmen, die hier im Thread als  'OK' befunden werden.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 18:50:08
es war damals so vereinbart, daß der zu veröffentliche Code an AXEL geschickt wird. Der hat Schreibrechte.

Ich biete mich gerne an, ein solches project auf meinem Server zu hosten. Nur sollten wir Axel dabei bitte nicht übergehen.

Ulrich
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 19:12:00
OK, lasst uns doch mal starten.

Funktion: PurgingLists

Kurzbeschreibung: Sortiert ein Array alphabetisch und entfernt Leerzeilen

Verwendung: Für Felder mit Mehrfachwerten, Dokument ist im Bearbeitungsmodus

Aufruf-Beispiel:
Code
Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim Purging As Variant 
   Dim MyUnique As Variant
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   Purging = PurgingList(doc.IchBinDasFeld)
      
   Call doc.ReplaceItemValue("IchBinDasFeld", Purging)
   Call uidoc.Reload
   
End Sub

Die Funktion:
Code
Function PurgingList( feldwert As Variant  ) As Variant
   Dim k As Integer
   Dim i As Integer
   Dim j As Integer
   Dim h As Integer
   Dim r As Integer
   Dim memberArray() As String
   Dim temp As String
   
   'Build an array of values to sort
   For k = 0 To Ubound(feldwert)
      Redim Preserve memberArray(1 To k+1)
      memberArray(k+1) = Cstr(feldwert(k))
   Next
   
 'Set up for Shell sort algorithm
   h = 1
   Do While h < k
      h = (h*3)+1
   Loop
   h = (h-1)/3
   If h > 3 Then
      h = (h-1)/3
   End If
   
 'Shell sort algorithm
   Do While h > 0
      For i = 1+h To k
         temp = memberArray(i)
         j = i-h
         Do While j >0
            If memberArray(j)>temp Then
               memberArray(j+h) = memberArray(j)
               memberArray(j) = temp
            Else
               Exit Do
            End If
            j = j-h
         Loop
      Next i
      h = (h-1)/3
   Loop
   
   PurgingList = memberArray
   
End Function

Hier stelle ich gleich mal die Frage:
Sollte man gleich noch ein @Unique einbinden? Oder lieber separat behandeln?
Ich tendiere zu 'separat behandeln', damit es übersichtlicher bleibt.

Der Code sollte jetzt noch angepasst werden:
 - Errorhandling
 - unsere festgelegten Standards (wie benenne ich Variablen etc.)
 - evtl. noch weiter fassen damit auch in anderen Situationen verwendbar

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 16.11.03 - 19:18:19
Zitat
Der Code sollte jetzt noch angepasst werden:
- Errorhandling
- unsere festgelegten Standards (wie benenne ich Variablen etc.)
- evtl. noch weiter fassen damit auch in anderen Situationen verwendbar

... und ganau das meint Axel_Jansen: Solange das alle nicht in trockenen Tüchern ist, sollte der code gar nicht erst gepostet werden.

Und warum nicht die Informationen zum Code in einer Art "embedded XML" Struktur im Header des Codes abbilden ?

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 16.11.03 - 19:31:35
Zitat
Der Code sollte jetzt noch angepasst werden:
- Errorhandling
- unsere festgelegten Standards (wie benenne ich Variablen etc.)
- evtl. noch weiter fassen damit auch in anderen Situationen verwendbar

... und ganau das meint Axel_Jansen: Solange das alle nicht in trockenen Tüchern ist, sollte der code gar nicht erst gepostet werden.

Und warum nicht die Informationen zum Code in einer Art "embedded XML" Struktur im Header des Codes abbilden ?



Genau darauf war ich aus!
Laßt uns doch anhand dieses simplen Beispiel-Codes mal festlegen was wir brauchen.

Zitat
Solange das alle nicht in trockenen Tüchern ist, sollte der code gar nicht erst gepostet werden.
Sehe ich anders: hier im Thread gepostet: selbstverständlich ja. In der fertigen Plattform: no!
Dieser Code hier sollte lediglich als erste Diskussionsbasis dienen.

Embedded XML halte ich auch für sinnvoll.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 22:03:13

Embedded XML halte ich auch für sinnvoll.

Wofür brauchen wir das xml?
So wie ich das momentan sehe:
1) für das für mich sehr wichtige Kollaboration feature (use case folgt)
2) um vom Java-Tool drauf zuzugreifen. Wobei das auch völlig egal ist, da man ja auch auf normale Notes-Dokumente zugreifen kann.

Das xml braucht aus meiner Sicht nicht in die Masken-Felder reingefrickelt zu werden (falls ihr das mit embedded xml meint).
Das geht viel besser mit Spaltenformeln. (so die Art Spaltenformel: "<Beschreibung>" + Beschreibung + "</Beschreibung>".
Das klappt eigentlich gut. Bringt zwar gewisse Performance-Kosten mit sich. Die Anwendungsfälle, die ich für xml sehe (Kollaborations-Feature), sind nicht wirklich performance-kritisch.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 16.11.03 - 22:23:20
Was das Thema XML jetzt hier soll, kann ich nicht ganz nachvollziehen ...
Vorab sollten doch folgende Fragen stehen:
- Sammeln "cooler" Codes (ich bleib' hier mal aus Erinnerungsgrünen beim nutzlosen Denglisch)
- Überlegen: Was gehört in eine LScriptLibrary, was man in jeder halbwegs anspruchsvollen Anwendung ggf. gebrauchen kann
- Art der Einbindung: Library nur komplett (Routinen dürfen sich gegenseitig aufrufen) oder jede Routine einzeln verwendbar ?
- Einheitliches Coding
- Einheitliche Kommentierung / Dokumentierung
- Sinnvolles ErrorHandling (incl. Berücksichtigung, wo der der jeweilige Code gerade läuft - FrontEnd, Backend, ErrorRoutines dürfen sich unter keinen Umständen selbst aufrufen et. pp.)
- Saubere Trennung zwischen Front- und Backend-Routinen (incl.: Was kann vom Web aus verwendet werden?)
- Umfangreiche Tests samt Protokollen

Wenn sowas steht, haben wir etwas zur Verfügung, was wir alle gebrauchen können, bei dem wir alle was lernen können: DANN können wir darüber nachdenken, wie das Einbinden vereinfacht wird, was man nach XML bringt etc. Vorher wüsste ich auch nicht, was ich mit XML anfangen sollte. Aus meiner Sícht ist das bis dahin pure, nutzlose Theorie.

Wie gesagt: Ich wäre gerne dabei. TMC hat gerade erst eine tolle Moderation bei solch einem Projekt geleistet, das nicht an theoretischen Diskussionen gescheitert ist, sondern ein wirkliches Ergebnis gebracht hat. Und ausdrücklich ist dort verwiesen auf "Version 2", an der wir alle weiter arbeiten können / sollen.

Schauen wir mal, ob wir Profs-AtNotes nun auch dieses - zugegebenermassen - viel anspruchsvollere Projekt gestemt kriegen ;-)

Ich wäre dabei ;-)

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 22:51:19
folgende Use Cases

+ Neues Code Dokument erstellen/bearbeiten/löschen.
(zu trivial um jetzt weiter spezifiziert werden zu müssen).

+ Code Dokument suchen (Über Kategorien oder Volltextsuche über Beschreibung)
(zu trivial, um jetzt weiter spezifiziert werden zu müssen).

+ Kollaborationsfeature für Version 1.0
sehe 2 Alternativen: zentraler Server oder P2P für Arme.

Wie ich das am Schreiben war, dachte ich das der zentrale Server doch wg. Bedienerkomfort und einfacher-zu-programmieren sehr vermutlich die bessere Lösung darstellt.

Wir müssen bei der Replizierung mit dem zentralen Server nicht Notes-Replizierung nehmen, sondern wir können das nachprogrammieren.
Der Server im Internet ist ja nicht unbedingt ein Notes-Server und v.a. ist er nicht in der selben Domäne wie der Client im Firmennetzwerk oder zu Hause. Hin und hergeschickt zwischen dem Server im Internet und Client werden dann xml-Dokumente. Diese enthalten Replizierungsanforderungen und zu replizierende code-Dokumente. Das ginge dann über http und macht firewall-mässig keine Probleme

a) User intiierte -Push-Replizierung
pre-condition: User ist mit dem Internet verbunden.
post-condition: die seit der letzten push-Replizierung vom User geänderten/neuen Dokumente befinden sich auf dem zentralen Server

- User betätigt Button Push-Replizierung
- lokales System schaut nach Datum der letzten Push Replizierung
System packt die nach der letzten Replizierung geänderten/neuen Dokumente in eine xml-Struktur.
- lokales System sendet die xml-Struktur per http gegen den zentralen Server (zentrales System).
- zentrales System fügt die in der xml-Struktur enthaltenen code-Dokumente (etwa nach einer Transformation in Notes-Dokumente) in den eigenen Datenbestand ein.

pre-condition: User ist mit dem Internet verbunden.
post-condition: die seit der letzten pull-Replizierung im zentralen System geänderten/neuen Dokumente befinden sich im Datenbestand des clients

b) user initiierte Pull Replizierung
-  - User betätigt Button Pull-Replizierung
- lokales System erzeugt ein xml-Dokument, das den Namen des Users und das Datum der letzten Pull Replizierung enthält
- lokales System sendet das Pull-Replizierungs-Anforderungs-xml gegen den zentralen Server (über http)
- zentrale Server empfängt das Replizierungs-Anforderungs-xml
- zentrale System packt aus eigenen Datenbestand neue/geänderte code-Dokument in ein Pull-Replizierungs-Antwort xml
- zentrale System schickt Pull-Replizierungs-Antwort.xml an den Client (als normale http-Response).
- lokales System fügt die neuen Dokumente in den eigenen Datenbestand ein.

c)
a) und b) lassen sich auch zu einer Push-Pull-Replizierung verknüpfen.

2. P2P Lösung
In Java gibt es zwar P2P-Lösungen. Die sind aber echt komplex und vermutlich nicht richtig ausgereift. Außerdem befürchte ich eine Menge Probleme durch Firmen-Firewalls, Personal-Firewalls, nicht-feste-IP Adressen und ganz allgemein Sicherheit.

Deshalb p2p für arme:
1. User A wählt aus einer Liste, den anderen User B aus, von dem er eine Pull-Replikation haben will.
2. System erstellt ein xml-Dokument, das Datum, Zeitpunkt der letzten Pull Replikation von User A gegen User B sowie den Namen, die email von User A enthält.
3. User A hängt das xml-Dokument an eine Mail an und adressiert diese an User B
4. User B löst das von User A gesendete Attachment aus der Mail in ein bestimmtes Verzeichnis.
5. User B betätigt Button, um ein weiteres xml-Dokument erzeugen (Pull-Replikations-Antwort-Dokument). Dieses xml-Dokument enthält die xml-Repräsentation aller code-Dokumente (s.o.), die nach dem Datum der letzten Pull-Replikation erstellt oder geändert wurden.
(Frage: Deletion-Stubbs?)
6. User B hängt das Pull-Replikations-Antwort-xml an eine Mail und sendet diese an den Pull-Replikations-Anforderer User A.
7. User A detached Pull-Replikations-Antwort-xml auf eine bestimmte Stelle auf der Festplatte.
8. User A betätigt Button und die Pull-Replikations-Antwort-xml-Dokumente werden in den Datenbestand seines code-repositories aufgenommen.

(für Leute, die LoNo als häusliches-Mailprogramm benutzen kann die Mail-Verschickung auch automatisiert werden, mit Outlook oder Mozilla-Mail hab ich das noch nicht gemacht, wobei sollte auch gehen).
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 16.11.03 - 22:57:06
Ääh, verteilen wir jetzt nicht das Fell des Bären, bevor wir ihn gefangen haben ?
Was hatte das jetzt noch mit einer LotusScript-Goodies-Lib gemeinsam ?

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 16.11.03 - 22:59:33
Was das Thema XML jetzt hier soll, kann ich nicht ganz nachvollziehen ...
...
Ich gebe dir zum großen Teil recht. Zunächst sollte erst einmal ein Datenbestand da sein.

Mein Vorschlag bezieht sich rein auf das Nebenthema, dass ein code repository nix abgeschlossenes ist, sondern etwas was mit der Zeit wächst.

Deshalb mache ich mir Gedanken dazu, wie die neuen/geänderten code Schnippsel möglichst komfortabel zwischen den Teilnehmern hin und hergeschickt werden können.

Das ist noch nicht mal kompliziert zu programmieren und kann später rangepflanscht werden.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 16.11.03 - 23:08:01
Bon, dann sind wir d'accord ;-)
Zitat
Why there is no russian resturants in usa?
may be some ..who knows. But when compared to Chinese, Thai,Italian and Indian we can hardly find any russian resturants?
Because Americans have a habit to drive to Russian restaurants. And Russian restaurants make no sense without vodka!
Da kann ich Dir aus eigener Erfahrung - aber im Urspungsland - zustimmen. Ich hoffe, kommendes Jahr mal wieder auf (private Einladung, das andere bringt ja nix) wieder hinzufahren / fliegen ;-)
Leider geht mein Lieblingsziel Abchasien aus bekannten Gründen momentan absolut nicht. Hätte ich mir nie träumen lassen, als ich 1978 das erste mal dort war, dass dort überhaupt ein Bürgerkrieg möglich wäre ... Das ist sowas von traurig !

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 17.11.03 - 22:29:27
OK, hab mal das bisherige Brainstorming visuell dargestellt (see attached gif)

TMC

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 17.11.03 - 22:31:53
Die Grafik noch im Mindmanager-Format angehängt.

Wer es bearbeiten will, braucht aber den Mindmanager von http://www.mindjet.de

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel Janssen temp am 18.11.03 - 12:57:51
oh. oh. oh. Was habe ich da angerichtet  :'(

Ich habe zur Zeit 3 Projekte.
Sollen wir nicht erst mal einen einfachen Prototypen in Notes entwickeln?

Mir ist wichtig:
- aller code wird in Dokumenten abgespeichert
- es gibt eine flexible Kategorisierung.
a) eine Kategorie kann mehrere hierarchische Unterkategorien enthalten:
(Office-Integration\excel oder String)
ein Dokument kann verschiedenen Kategorien zugeordnet werden.
- Kollaborationsfeatures werden später umgesetzt.

Wie es jetzt aussieht, kann ich mich mit der Sache erst wirklich frühestens in der 2. Dezemberhälfte beschäftigen.

Gruß Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel Janssen temp am 18.11.03 - 14:49:11
...ansonsten eignet sich die Aufgabenstellung wie ich sie verstehe hervorragend, für ein mittleres Lernprojekt in Java.
Wenn sich also >= 2 Mitstreiter commiten, die e.r.n.s.t.h.a.f.t daran mitarbeiten wollen, dann könnte ich den Entwicklungsprozeß kollektivieren.

Ich hab da auch heute auf der Fahrt zur Arbeit drüber nachgedacht. Das dürfte machbar sein.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 22.11.03 - 01:59:33
Hi,

nun ist das erste Brainstorming gelaufen, jetzt denke ich ist es an der Zeit dass wir mal loslegen, sonst wird es nie was  ;)

Es wurde ja vermehrt festgestellt, dass wir uns vor der eigentlichen Erstellung der Scripts Gedanken über den Aufbau etc. machen müssen der Scripts.

Nochmal zusammengefasst:
- Errorhandling
- Funktionsbezüge
- Test(verfahren) inkl. Protokoll
- Abhängigkeiten
- Art der Einbindung (komplette Lib oder einzelne Routinen)
- Einheitliches Coding
- Einheitliches Dokumentieren
- Trennung Frontend/Backend - Routinen
- Einheitlicher Aufbau

Wenn ich diese Liste so überfliege, stelle ich fest, dass man zu jedem Thema alleine bestimmt zig Postings machen könnte, bevor man auch nur ein einziges Script hat.

Daher erscheint mir nun die Gefahr, dass wir uns hier u.U. zutode diskutieren, ohne zu einem Ergebnis zu kommen.

Andererseits ist es m.E. alles nicht zu tragisch, wenn man das ganze mal anders betrachtet.

Mal ein Vorschlag von mir:

Errorhandling:
Sollte im Semeaphoros (http://www.atnotes.de/index.php?board=3;action=display;threadid=11980)-Thread abgedeckt werden

Art der Einbindung (komplette Lib oder einzelne Routinen)
Sollten wir uns überlegen, sobald mal ein paar Codes stehen
--> zurückstellen

- Funktionsbezüge
Sollten wir uns überlegen, sobald mal ein paar Codes stehen
--> zurückstellen

Abhängigkeiten
Sollte doch Teil der Dokumentation sein
--> verschieb zu Dokumention

Trennung Frontend/Backend - Routinen
Sollte auch Teil der Doku sein bzw. dann in der Plattform ersichtlich, was es betrifft.
--> erst auch mal zurückgestellt, wird nachgezogen

Rest:
- Einheitliches Coding
- Einheitliches Dokumentieren
- Einheitlicher Aufbau
- Test(verfahren) inkl. Protokoll

Zum Rest: Jetzt schlage ich wirklich vor, wir picken uns eine Problemstellung raus, und starten mit dieser.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 22.11.03 - 15:56:29

Rest:
- Einheitliches Coding
- Einheitliches Dokumentieren
- Einheitlicher Aufbau
- Test(verfahren) inkl. Protokoll

Erstmal grundsätzlich und werde noch heute konkreter.
Modernes Projektmanagement (Agile movement, Rational Unified Process, xTreme Programming) geht davon aus, dass die Effektivität von detaillierter Planung im Projektvorfeld in der Vergangenheit deutlich überschätzt wurden.
Lassen wir uns also bei den "Einheitliches x" Punkten von der Vorstellung leiten, dass wir durch die Definition nicht jedes Problem aus der Welt schaffen können.
Schliesslich soll ja das Hinzufügen von Routinen Spaß machen und der Beitragende soll sich nicht durch einen bürokratischen Prozeß quälen.

Ein gewisser Rahmen kann natürlich einiges vereinfachen. Deshalb später ein paar konkreten Vorschläge.

Gruß Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 22.11.03 - 21:01:38
Zitat
Modernes Projektmanagement (Agile movement, Rational Unified Process, xTreme Programming) geht davon aus, dass die Effektivität von detaillierter Planung im Projektvorfeld in der Vergangenheit deutlich überschätzt wurden.

Ich bin da auch Deiner Meinung! Hast Du dazu 'ne Quelle?
Wo das andersrum schiefgelaufen ist, ist ja das Maut-System in Germany. Steht auch ein netter Artikel in der letzten c't. Hier war aber u.a. das Problem, dass ein Zeitdruck aufgebaut wurde, und der Anbieter u.a. nur deshalb den Zuschlag bekam, weil er das ganze schneller realisiert. Das Ergebnis davon sehen wir ja jetzt.

Wir haben hier ja definitiv die Sunglasses auf  8) Zeitdruck ist soweit nicht existent  :)
Trotzdem sollten wir mal starten, ist m.E. einfach völlig unproduktiv, dass Notes-Programmierer immer wieder das Rad neu erfinden und sich neue Routinen basteln bzw. bestehende anpassen.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 22.11.03 - 22:10:27
Ich bin da auch Deiner Meinung! Hast Du dazu 'ne Quelle?
http://www.wikiservice.at/dse/wiki.cgi?AgileSoftwareEntwicklung (Links)
Martin Fowler, Craig Larman, Kent Beck, Phillipe Kruchten, Alistair Cockburn.
http://www-140.ibm.com/developerworks/rational

+ Einheitliches Coding
- einheitliches Kommentar-Template zu Beginn jeder Funktion:
%rem
eindeutige_ID:(kann zum generieren ein kleines Java-Tool programmieren, das per Icon vom desktop gestartet wird)
Ersteller:<email>
categories:String-Handling, Validation
version:
datum:
ziel_kurz:
beschreibung:
bemerkung:
benutzt_folgende_funktionen:id_Funktion, id_Funktion
%end rem

- Sprechende Variablennamen mit "Typmarkierung" zu Anfang:
strName
varName
intName
docName
colName
sName
dbName

und in "camel-case", dh Gross und Kleinschreibung in Form eines Kamels:
strEmailOrganisation = "ttt@jupp.com"
Ich neige oft dazu Variablennamen extrem auszuschreiben. Vermutlich ist strEmailOrg leichter lesbar. Ich weiss es nicht.
Ich bin ein grosser Freund rein englischer Variablennamen (docEmployee statt docAngestellter).  
Notes-Objekte die sich im Scope des Aufrufers befinden immer mit This.
Eine Funktion, die hauptsächlich aus einem Notes-Dokument heraus aufgerufen wird (querySave, Button) hat so:  docThis (Dokument, aus dem code aufgerufen wurde), sThis (User-Session), dbThis (Datenbank, in der sich der code befindet).
(hoffe das ist verständlich).

Ich finde, man sollte hier aber nicht päpstlicher als der Pabst sein.
Ein sehr einflussreiches Buch der OO/Agile-Bewegung (Fowler, Refactoring) sagt imnsho sehr richtig, dass man schlechten code sowieso als solchen erkennt und die Formalia nicht sooo wichtig sind (bad code smells).

+ einheitliches Dokumentieren
Dafür sind Kommentarzeilen da.


+ Einheitlicher Aufbau
Alle Dim statements zu Beginn.
Einheitliches Errorhandling
Ansonsten ist dieses wichtige Anliegen schwer in wenigen Worten zu formalisieren.
Z.B. sollten komplexe Funktionen in Unterroutinen aufgeteilt werden, die kohäsive (d.h. klar abgegrenzte nicht zu viele Aufgaben/Verantwortungen übernehmen).

- Test(verfahren) inkl. Protokoll
Mir nicht ganz klar, wie das gemeint ist.
Der Ideengeber mag es mir Verzeihen, aber das riecht für mich ein bischen nach Formalismus.
Das hängt auch mit dem eigentlichen Ziel zusammen und da mag den Beteiligten unterschiedliches Vorschweben.
Was mich anbetrifft, soll es eine Sammlung an feingranularen, kohäsiven Funktionen werden (deutsch: kleine Funktionen).
Beispiel: Alle Arbeitstage zwischen Tag_x und Tag_y ausrechnen als eigenes Code-Dokument und nicht die Suche nach der endgültigen allumfassenden Skript-Bibliothek für Datumshandling.
Feingranulare Funktionen erfüllen klar definierte Aufgaben und sind somit ohne viel Formalismus vom Ersteller zu testen.

Gruß Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 22.11.03 - 22:37:52
sind doch schon mal  coole Vorschläge von Axel !!

Bin zwar etwas abgelenkt, weil ich mir grad die 'The Chemical Brothers' Singles 93-03 in voller Lautstärke reindröhne, aber das inspiriert ungemein :-)
Die Nachbarn haben sich auch noch nicht beschwert....

Beim Code-Header hätte ich den Vorschlag, dass das die Plattform automatisch übernimmt (wir haben da ja eh die Felder 'Ersteller', 'Erstellt am', etc.).

Ansonsten finde ich auch, dass wir englische Bezeichnungen nehmen sollten. Jeder Coder kann englisch (wenn wer nicht: mein Beileid).

Thanks Axel, gute Vorgaben.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 22.11.03 - 23:05:05
Axel hat da wirklich gute Vorschläge, danke.

Bad code smells:

Stimmt, und kommentierter schlechter Code "still smells", läuft auf einer sprachlichen Ebene: wer unlesbaren Code schreibt, kann auch nicht deutlich kommentieren, ein inhärenter Zusammenhang (Axel möge das übersetzen, er hat ja Uebung darin ..... :-)
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 22.11.03 - 23:40:45
Jo, TMC, anfangen sollten wir jetzt mal. Und dann das Ergebnis besprechen. Und das Ganze im ersten Anlauf vielleicht mal off-list: Du verteilst an die Bereitwilligen (die vielleicht schon Routinen angeboten haben) Aufgaben, sammelst und verteilst diese. Dann besprechen wir die Ergebnisse, die Testszenarien etc.

Was den Header angeht: Wir haben hier Standards (leider zwei - 'ne kleine und 'ne grosse Variante). Die würde ich gerne zur DIskussion stellen, würde mir ja selbst sehr helfen (das wird dann die dritte und endgültige Variante).
Was die Coding Standards angeht: In wirklich internationaler Zusammenarbeit hat sich bei uns die Budapester Notation (die wohl ursprünglich aus der C++-Ecke stammt) echt bewährt. Sag an, wenn ich das mal Notes- und Forums-gemäss aufbereiten und posten soll.

Und nun los (nach der Nachtruhe ;-)

Bernhard

PS: Wegen "Zudröhnen" - ich höre gerade (nachbarfreundlich über Kopfhörer) meine Neuerwerbung: "Deep Purple live at K.B. Hallen, Kopenhagen 1972". Da müssen fast alle Youngsters aber noch verdammt viel lernen ... Aus einem 4:17 min Studio-Titel fast eine halbe Stunde zu improvisieren, ohne dass die ganze Sache aus dem Ruder gerät, sondern vielmehr zu *dem* "Space Truckin' - da gibt es bis heute nicht viele Teams, die das können ... Da können wir auch von lernen, auich wenn das hier im Forum ja schon fast perfekt funktioniert (siehe den CRM-Thread heute ;-)

PPS: "Deep Purple live at K.B. Hallen" ist natürlich legal erworben und nicht das berühmte Bootleg ;-)  Das Geld war's mir wert !

PPPS: Für sieben Freunde darf ich's brennen laut deutschem Urheberrecht ... Bis jetzt habe ich noch keine Kopie gemacht ;-)
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 23.11.03 - 14:48:41
Was die Coding Standards angeht: In wirklich internationaler Zusammenarbeit hat sich bei uns die Budapester Notation (die wohl ursprünglich aus der C++-Ecke stammt) echt bewährt. Sag an, wenn ich das mal Notes- und Forums-gemäss aufbereiten und posten soll.
Bitte gerne. Die heißt übrigens "Hungarian Notation".
Ein paar Links:
http://www.gregleg.com/oldHome/hungarian.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsgen/html/hunganotat.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsgen/html/hunganotat.asp)
http://www.it-academy.cc/content/article_browse.php?ID=995
http://www.uni-koblenz.de/~daniel/Namenskonventionen.html
http://support.microsoft.com/support/kb/articles/Q110/2/64.asp
http://www.qucis.queensu.ca/Software-Engineering/archive/hungarian
http://cm-solutions.com/cms/technical/guide/hungarian_naming_convention.htm

Aufs Original von Charles Simonyi kommt man leider nur über archive.org, die Seite ist aber z.Zt. wohl nicht verfügbar oder überlastet: http://web.archive.org/web/20001018073323/www.strangecreations.com/library/c/naming.txt

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 23.11.03 - 15:58:30
da bin ich ja mal auf die ersten konkreten Ergebnisse gespannt...

wenn "damals" so  theoretisiert worden wäre ( ich hasse Konjunktive ), dann würden wir heute noch an der Konsole arbeiten.

Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 23.11.03 - 20:09:20
wenn "damals" so  theoretisiert worden wäre ( ich hasse Konjunktive ), dann würden wir heute noch an der Konsole arbeiten.

Damals brach wurde ja auch irgendwann abgebrochen.

Sollten wir uns auf Java als Interface einigen, kann ich den Theorie-Granatwerfer erst richtig einschalten.  ;D
Bei meiner derzeitigen Arbeits/Zertifizierungs-Belastung rechne ich mit einem konkreten Ergebnis nicht vor 2004 (sehr am Anfang).

Der code ist doch eigentlich schon da (code-bin von ntftools, searchDomino.com)
Wir müssen den einfach nur in eine vernünftige kollaborative Form mit einem wirklich guten User Interface bringen.  

Gruß Axel,

der absolut davon überzeugt ist, dass "Programmierung" immer weniger aus tippen besteht und immer mehr aus dem, was Herr Krause "theoretisieren" bezeichnet. Nur aufpassen, das richtig theoretisiert wird.  
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 23.11.03 - 20:27:13
halte ungarische Notation nicht für sinnvoll.

Sie erscheint mir sehr C bezogen. Es stimmt einfach nicht, dass sie in für allemöglichen Programmierstandard der Standard ist. Java hat z.B. seinen eigenen Standard, der praktisch nix mit der ungarischen Notation zu tun hat. Z.b. ist da der Datentyp explizit nicht Teil des Variablennamens.

Man schaue sich einfach mal diese Datentypen-Kürzel an:
http://www.uni-koblenz.de/~daniel/Namenskonventionen.html#Pr%E4fixe

Die Datentypen gibt es überhaupt nicht in LotusScript.

Deshalb mein Vorschlag: Eigener Namensstandard.
Welche Informationen brauchen wir:
1. Datentyp: Wie wäre es für jeden Datentyp einen relativ deskriptiven 3-Buschstabenkürzel zu nehmen:
int, lng, dob, var, str, etc.
Gut an der ungarischen Notation finde ich die explizite Kennzeichnung von globalen Variablen durch ein vorgestelltes g_
Der Rest der Namen wäre dann deskriptiv für die Funktion der Variablen. BeispielName:
g_dobSumme
Also eine globale double-Variable double, die eine Summe enthält.

Gruß Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 23.11.03 - 20:49:18
Die ungarische Notation war bei uns nur der Aufhänger, um Konventionen für Notes zu entwickeln.

Ohne Anspruch auf Vollständigkeit und "That's it!" hier ein schneller Auszug:
i               Integer
l               Long
sng          Single
dft            Double
crr            Currency
sz            String
v              Variant
a              Array
lst             List


b   Boolean      In Wirklichkeit Integer - nur genutzt für "True" und "False"
t   Type      Dim tPersonRecord as PersonRecord
C   Class
m_   Member variable   (of a class)
g_   Global variable prefix


ws   NotesUIWorkspace
uidoc   NotesUIDocument
session   NotesSession
dbd    NotesDbDirectory
db   NotesDatabase
log   NotesLog
dt   NotesDateTime
nl   NotesNewsLetter
dc   NotesDocumentCollection
doc   NotesDocument
view   NotesView
viewcol   NotesViewColumn
agent   NotesAgent
acl   NotesACL
acle   NotesACLEntry
itm   NotesItem
name   NotesName
rti   NotesRichTextItem
eo   NotesEmbeddedObject
dt   NotesDateTime

Nur so als Vorschlag. Ich passe mich da auch gerne an ;-)

Bernhard

PS: Den Versuch einer Ausrichtung der Liste gebe ich auf - das dauert mir jetzt zu lange, Tabs zu ersetzen ...
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 23.11.03 - 21:38:01
Axel:
<Fun>
Was ist den etc für ein Datentyp, diesem Typen bin ich noch nie begegnet ....
</Fun>

Ergänzung zu Bernhard:
b Boolean, eigentlich Integer: 8Tung, in ND6 gibt es den Datentyp Boolean neuerdings.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 23.11.03 - 21:48:27
Da Bernhards Liste vollständig aussieht, können wir die wegen mir nehmen.

Muss man dann eigentlich diese komigen Unterstriche nehmen  ???

sz_Employee ? oder szEmployee ?
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 23.11.03 - 21:52:58
ich hab die Unterstriche auch nicht gerne.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 23.11.03 - 22:14:16
Ich verwende die Unterstriche prinzipiell nicht - ausser bei g_ für global oder für p_ für private (wenn dies denn überhaupt mal notwendig sein sollte).

Ciao,
Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel am 24.11.03 - 15:56:15
Hi,

ich bin jetzt erst über diesen Thread "gestolpert".

Das was ihr vorhabt, gibt es ansatzweise schon.

http://www.free.dominoserver.de/computer/noteslibrary.nsf (http://www.free.dominoserver.de/computer/noteslibrary.nsf)

Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 24.11.03 - 17:18:32
Jo, das gibt es alles sogar sackweise - in der Regel (wie in Deinem Link) aber unsauber programmiert.
Und wir wollen ja eine ScriptLib aufbauen, die man wirklich "blind" einsetzen kann usw. usf. - man muss dafür wohl den ganzen langen Thread hier durchlesen.
Ich hoffe, dass das Projekt wirklich ans Laufen kommt ;-)

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel am 24.11.03 - 19:32:25
@Bernhard,

ich habe da so meine Zweifel, denn diese Datenbank sollte auch so ein Projekt werden. Ich habe mehrmals um Unterstützung gebeten, aber die Resonanz war niederschmetternd. So pflege ich diese Datenbank für mich und das eine oder andere fällt auch für das Forum ab.

Zum Thema unsauber programmiert, will ich nur sagen, dass das teilweise Routinen aus dem Internet sind, die ich getestet habe und dass sie funktionieren, auch ohne viel drumherum.

Das mit den Bibliotheken ist in meinen Augen ein zweischneidiges Schwert. Zum einen ist es eine feine Sache, man bindet sie ein und hat viele Funktionen "griffbereit". Aber... eine Bibliothek wird immer als Ganzes geladen, auch wenn man nur eine oder zwei Funktionen braucht. Deswegen bin ich gegen Monsterbibliotheken und suche mir meine Funktionen zusammen, die ich für meine Datenbanken brauche. Allerdings habe ich auch eine Bibliothek mit Grundfunktionen, die ich in fast jeder DB brauche.


Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 24.11.03 - 19:54:17
@Alex:
Ich habe da auch meine Zweifel ... Zum einen: Das Ganze funktioniert nur, wenn das Ganze absolut sauber aufgebaut ist (siehe die entsprechenden Anmerkungen in diesem Thread). Wegen des Ladens jeweils der kompletten Lib ist das naürlich ganz besonders auch eine Frage der Doku - was kann ich aus der Lib 'rauskippen, damit DIESE Routine noch funktioniert ?

Was ich hinsichtlich Zweifeln natürlich auch nicht verschweigen möchte: Bestimmte Routinen, die - nun, sagen wir mal,  aussergewöhnlich sind, werden wohl kaum in solch einer Lib auftauchen ... OpenSource mag ja eine feine Sache sein, aber doch eher was für Leute, die ein ganz dickes Sparkonto / Erbschaft / Ölquelle usw. haben ...

Wie gesagt: Ich bin sehr gespannt, was nun weiter geht.

Ciao,
Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 24.11.03 - 20:35:20
Hab gestern noch einen free Webspace beantragt, der nun freigeschalten ist.

Hier mal eine Projektseite:
http://www.websamba.com/atnotes (http://www.websamba.com/atnotes)

Soll keine dauerhafte Site sein, eben nur für das Projekt, daher auch nicht immer 100% sauberer HTML-Code. Unter Mozilla und IE läuft sie.

Vielleicht sollten wir hier einfach die ersten Ergebnisse draufstellen, bis eine endgültige Plattform da ist.

TMC

*EDIT*
Man muss, um die Seite betreten zu können, den Port 8888 zulassen (dies hatte ich über meine Firewall für den Browser per Default gesperrt)
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 24.11.03 - 20:50:41
DANKE, TMC.
Da steckt schon viel Arbeit drin - ich werde mein Bestes tun, um da möglichst sinnvolles beizutragen. Was ganz gut passt: Ich baue gerade - ohne Rücksicht auf Verluste - meine ScriptLibs neu auf.

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 04.12.03 - 21:49:47
Zwischenstand:

Wir starten gerade offtopic per PM, erste Scriptvorschläge zu diskutieren.
Wer sich beteiligen möchte an der Diskussion und am "formen" der ersten Functions, bitte kurze PM an mich.
Die ersten Ergebnisse werde ich dann hier posten als Motivation, unsere Library nach und nach zu füllen ;)

Grüße,
TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 06.12.03 - 18:40:55
********* Projektinfo *********

Hab grad gesehen, dass Axel gerade ein Projekt startet für die Abbildung der Scripts  :D

http://www.atnotes.de/index.php?board=24;action=display;threadid=12702 (http://www.atnotes.de/index.php?board=24;action=display;threadid=12702)



TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 06.12.03 - 20:12:12
Hi,

ein Versuch war es mal, Scripts offline zu disktutieren, nur leider verliert man da im PM leicht den Überblick und Zusammenhang.
Daher tendiere ich doch dazu, die Diskussion online weiterzuführen.

Wir haben in Summe jetzt 5 Scripts zur Diskussion.

Mit dem ersten starte ich mal, es ist von Bernhard (koehlerbv) und ein ReplaceSubstring-Derivat:

ACHTUNG ENTWURF - NUR ZUM TESTEN VERWENDEN

Code
Function ReplaceSubstring (vSource As Variant, vFrom As Variant, vTo As Variant) As Variant
    '===========================================================================================
    ' Purpose: Replaces a specific substring in a string or array of strings with a new substring
    '              The parameters MUST be strings or array of strings !
    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ' Arguments              Type    Description    
    '      vOriginal        |  I/-  |    the source string or string array
    '      vForm            |  I/-  |    the substring (or string array) to replace
    '      szTo            |  I/-  |    the substring (or string array) to insert
    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ' Returns:    String array with replaced values
    '                 NOTE: There is a difference between @ReplaceSubstring and this function !
    '                            If vFrom has more elements as vTo, we replace only the amount of elements in vTo !!!
    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    ' Created by: Bernhard Koehler on 08.07.2003        Modified by:  on
    '===========================================================================================
    
    Dim aSource As Variant
    Dim aFrom As Variant
    Dim aTo As Variant
    Dim szSource As String
    Dim vResult As Variant
    Dim iLoop As Integer
    Dim iElementsToChange As Integer
    Dim iFirstStringPos As Integer
    Dim szTo As String
    
    On Error Goto ErrorRoutine
    
    'The default value: Source = Result
    ReplaceSubstring = vSource
    
    'Make sure that all parameters becomes arrays (We have to decide two cases: vSource is String, or any kind of a variant)
    If Datatype (vSource) = V_STRING Then
        Redim aSource (0) As String
        aSource (0) = vSource
    Else
        aSource = vSource    
    End If
    
    If Datatype (vFrom) = V_STRING Then
        'No calculations with an empty FromList:
        If vFrom = "" Then Exit Function        
        
        Redim aFrom (0) As String
        aFrom (0) = vFrom
    Else
        aFrom = vFrom    
    End If
    
    If Datatype (vTo) = V_STRING Then
        Redim aTo (0) As String
        aTo (0) = vTo
    Else
        aTo = vTo    
    End If
    
    'Make the replaces:
    szSource = Implode (aSource, Chr$ (255))        'make a string from the source parameter
    
    'Determine the limit of changes:
    If Ubound (aFrom) > Ubound (aTo) Then
        iElementsToChange = Ubound (aTo)
    Else
        iElementsToChange = Ubound (aFrom)
    End If
    
    
    For iLoop = 0 To iElementsToChange
        While Instr (szSource, aFrom (iLoop)) > 0
            iFirstStringPos = Instr (szSource, aFrom (iLoop))
            If iFirstStringPos = 1 Then
                szSource = aTo (iLoop) & Mid$ (szSource, iFirstStringPos + Len (aFrom (iLoop)) - 0, 255)
            Else
                'szSource = Mid$ (szSource, 1, iFirstStringPos - 1) & aTo (iLoop) & Mid$ (szSource, 1 + iFirstStringPos + Len (aFrom (iLoop)))
                szSource = Mid$ (szSource, 1, iFirstStringPos - 1) & aTo (iLoop) & Mid$ (szSource, iFirstStringPos + Len (aFrom (iLoop)), 255)
            End If
        Wend
    Next
    
    ReplaceSubstring = Explode (szSource, Chr$ (255))
    Exit Function
    
ErrorRoutine:
Call DisplayErrMsg ("ReplaceSubstring")
End Function
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 06.12.03 - 20:14:33
OK und hier mein Feedback zum ReplaceSubstring-Derivat:

Ich poste mal direkt ohne Rücksicht auf Höflichkeitsfloskeln (bla bla leider könnte da u.U. vielleicht evtl. ein Fehler sein bla bla...)

- Code-Header: Code-Header "Arguments" stimmt nicht überein mit tatsächlichen Bezeichnungen (vOriginal / vSource , etc.)

- Wenn ich Option Declare setze, bringt der Designer eine Fehlermeldung, dass " V_STRING" nicht deklariert ist.

Testszenario:
R5011 Client, Maske in Bearbeitung, die Textfelder
- Inhalt (dieses Feld soll durchsucht werden)
- Vorgabe_Ist (Wert nach dem gesucht werden soll - also der replaced werden soll)
- Vorgabe_Soll (Wert, der eingefügt werden soll)

Aufruf des Scripts: über Button

Script:
Code
Sub Click(Source As Button)
   Dim uiws As New NotesUIWorkspace 
   Dim uidoc As NotesUIDocument    
   Dim session As New NotesSession 
   Dim db As NotesDatabase 
   Dim doc As NotesDocument
   
   'die 3 Felder
   Dim szInhalt As String
   Dim szIst As String
   Dim szSoll As String
   
   Set db = session.CurrentDatabase
   Set uidoc = uiws.CurrentDocument 
   Set doc = uidoc.Document 
   
   'Feldinhalte holen...   
   szInhalt = doc.Inhalt(0)
   szIst = doc.Vorgabe_Ist(0)
   szSoll = doc.Vorgabe_Soll(0)
   
   'Function ausführen
   doc.Inhalt = ReplaceSubstring(szInhalt, szIst, szSoll)
      
   'Speichere Doc   
   Call doc.save(False, False)   
   
End Sub

Im Textfeld "Inhalt" steht der Text "Rainer askhfdkjad hkjahdkjas dk"
Im Textfeld "Vorgabe_Ist" steht "Rainer"
Im Textfeld "Vorgabe_Soll" steht "Hans"

Dokument wurde bereits gespeichert und neu im Bearbeitungsmodus geöffnet.

Aufruf
Beim Klick auf den Codebutton
- durchläuft der Debugger sauber die Sub, geht dann normal in die Function, durchläuft die Function
- An der Stelle "If Ubound (aFrom) > Ubound (aTo) Then" springt er danach zum Errorhandler, dann Fehlermeldung "No RESUME"

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Semeaphoros am 06.12.03 - 21:34:58
Das sieht mir so aus, wie wenn da beim Uebermitteln der Funktion etwas verloren gegangen ist, müsste mal Bernhard zuerst den Code überprüfen und sagen, was Sache ist, natürlich liesse sich das auch so ausmerzen, aber Bernhard soll mal dazu was sagen.
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 06.12.03 - 22:37:28
Ja, ja, soweas kommt von sowas, wenn man spätabends - geplagt vom schlechten gewissen - noch "fix ein bisschen Code zusammengrabbelt".
Auf jeden Fall: Erst hatte ich 'nen roten Kopf wegen verspätetem Posting, und jetzt wegen übereiltem Posting ...

@TMC: Ich schicke Dir off-list DIE neuen Codes.
In ReplaceSubstring ist tatsächlich die vorletzte Zeile "Exit Function" verschütt gegangen - daher das "missing resume".
Natürlich war auch der Header schlampig. Besonders deutlich sollte darauf hingewiesen werden (im Header), das dieses ReplaceSubstring IMMER ein Array zurück gibt (wie das originale ja auch - aber bei der @function merkt das ja keiner).
Was mir aber ein völliges  Rätsel ist: Wie konntest Du das Teil überhaupt kompilieren - es fehlen ja drei weitere aufgerufene Module und das %INCLUDE "lsconst.lss".
Die fehlenden Module reiche ich gleich mit nach.

Sorry für die Konfusionen ...

Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: Axel_Janssen am 06.12.03 - 23:19:42
Hi,

bekomme langsam angesichts TMCs Hartnäckigkeit ein schlechtes Gewissen, aber wg. der derzeitigen Vielzahl meiner Aktivitäten, halte ich es z.Zt. für keine gute Idee eigene Skripts beizusteuern. Vielleicht in der nächsten Woche. Auf jeden Fall nach dem 20.12.. Davor muss ich noch 2 Projekte und eine Projektübergabe an mich abschliessen.  ::) Da sollte man sich ein bischen zusammenreissen. Die UML-Zertifizierung hab ich eben innerlich sowieso schon auf Anfang Januar verschoben.

Den Thread mit der Client-Erstellung im Java für Anfänger hat mit dieser Arbeit hier nur mittelbar etwas zu tun. Das spukte mir aber seit Wochen im Kopf rum und passt auch gut in meine Zertifizierungsvorbereitung für UML.

keep it up

Axel
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: koehlerbv am 06.12.03 - 23:32:17
Jo, Axel - alles zu seiner Zeit. Deine gegenwärtigen Projekte sollten erstmal abgeschlossen sein. Dann passiert Dir auch nicht so ein bösesr Fauxpas wie mir, der dachte, grabbel mal fix was aus der Kiste - ohne Nachdenken. Was dem Gedanken des Projekts nun wirklich nicht zuträglich war.
Und gegenüber TMCs hartnäckigkeit: Nochmals"Hut ab !"

Ein schönes Restwochenende wünscht Euch allen
Bernhard
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 10.12.03 - 21:50:14
Okay, unten angehängt die neuen Codes von Bernhard für ReplaceSubstring.

Wie immer der Hinweis:
ACHTUNG ENTWURF - NUR ZUM TESTEN VERWENDEN

Test-DB folgt gleich....

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 10.12.03 - 21:53:46
Hier noch die DB zum testen.

Bitte jetzt ausführlichst testen und hier Feedback posten, ich denke die DB ist selbsterklärend.

@Bernhard: ein *Respekt* von meiner Seite, saubere Sache, auch das Errorhandling, auch wenn Du Dir da noch mehr erwartest.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: eknori am 11.12.03 - 09:04:03
Die verwendete Implode - Funktion kollidiert mit der in Notes 6 vorhandenen Implode Funktion...
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 12.12.03 - 18:57:39
OK Ulrich, dann sollte man noch aufnehmen im Comment, dass unter R6 die Implode-Funktion auch ersetzt werden kann durch die bereits vorhandene.

Danke für den Hinweis.

TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 12.12.03 - 19:05:56
** mein Testfeedback **
- klappt soweit alles wie erwartet
- Zahlenfelder werden nicht unterstützt (was ja auch so dokumentiert ist).
Allerdings wäre hier u.U. eine "bessere" Fehermeldung wünschenswert à la "Es werden keine Zahlenfelder unterstützt.... "
Bisher kommt folgende Meldung:
Zitat
Fehlerhafte Routine: <Implode>
Fehlernummer: 13 (Zeile 30) - Type mismatch
iss aber mehr ein "nice to have"......

----------

Generell zu den Scripts:
Wie wollen wir die Sprache zukünftig handhaben?
Ich denke es sollte einheitlich sein.

Vorschläge zur Diskussion:
a) Alles englisch
b) Comments (Variablenbezeichnungen etc.), Code Englisch, Meldungen deutsch
c) alles deutsch
Ich persönlich tendiere zu (a) oder ggf. (b).

Grüße,
TMC
Titel: Re:@Formula-Befehle in Lotus Script abbilden
Beitrag von: TMC am 22.01.04 - 23:42:16
Ich möchte hiermit das Projekt offiziell zurückstellen.

Hier war ich nun schon der zweite der es zumindest versucht hat mit Scripts :-)

Mein Fazit:
Wir bräuchten für dieses Projekt mindestens 5-6 Leute, die sich mehrere Wochen lang sehr intensiv mit dem Thema beschäftigen, um das ganze aufzubauen.
Dazu habe ich leider nicht die Zeit, und so geht es wohl allen anderen auch.

Wirklich gute Scripts finden sich im www leider selten, meines Erachtens ist ein Grund, weil Entwickler eben ihre Brötchen mit Notes/Domino verdienen.
Da verstehe ich es auch zu gut, dass nicht jeder seine Scripts einfach so postet.

Wie Bernhard schon geschrieben hat: die im www befindlichen Scripts sind meist fehlerhaft, decken nicht alles ab, kein Errorhandling u.v.m.

Außerdem ist dieses Projekt wirklich sehr zeitaufwändig. Es ist ja nicht mit einem Script getan, sondern es sollten einige entstehen, diese müssen getestet werden, überarbeitet, an Releases angepasst werden, etc. etc.

Um so mehr freue ich mich, dass wir wohl bald einen neuen Bereich hier im Forum starten, in dem wir allgemeine Abhandlungen etc. übersichtlich darstellen.

Grüße,
Matthias

P.S. Ich bin aber nach wie vor Bereit, hier was zu machen, sollte jemand Alternativ-Vorschläge haben, wie wir dies umsetzen können, bitte immer her damit. Ein Fehler von mir war - im Nachhinein gesehen - dass ich mich mit Axel nicht ausgetauscht habe. Er hat ja im ähnlichen Projekt schon eine DB aufgesetzt etc. Auch hier ist es imho an mangelnder Teilnahme gescheitert, wohl aus oben genannten Gründen.