Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Ozan am 03.06.09 - 10:34:20

Titel: [erledigt] Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 03.06.09 - 10:34:20
Hallo,

wie kann ich mit LS in einem Textfeld von recht nach erste "+" suchen und nur diese ersetzen wie z.b:

Original:
+Blintext+Blintext+BlintextBlintext+Blintext

ersetzt:
+Blintext+Blintext+BlintextBlintext-Blintext

Gruss

Maldus
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: WildVirus am 03.06.09 - 10:41:26
Die Forumssuche ist gut - bringt glatt:

http://atnotes.de/index.php?board=11%3Baction=display%3Bthreadid=12267

Viel Erfolg.

CU,
Axel
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 03.06.09 - 10:51:20
Hallo,

Ich wuerde mir auch einmal

StrRightBack, StrRight, StrLeftBack und StrLeft

zu diesem Zwecke ansehen.


Andreas
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 10:41:42
Jetzt habe ich mir eine andere Lösung erarbeitet, ich zerlege diese TextFeld mir folgendes:

 Dim stringList As String, delimiter As String
 Dim resultArray( )  As Variant
 Dim StringToArray As Variant
 delimiter="+"
 stringList=xmldoc.titel(0)
 Dim elementCount As Integer
 elementCount = -1
  While ( Instr( stringList, delimiter ) <> 0 )
   elementCount = elementCount + 1
    Redim Preserve resultArray( elementCount ) As Variant
    resultArray( elementCount ) = Trim$( Left$( stringList, Instr( stringList, delimiter ) - 1) )
    stringList = Right$( stringList, ( Len( stringList ) - Instr( stringList, delimiter) ) )
  Wend
 elementCount = elementCount + 1
 Redim Preserve resultArray( elementCount ) As Variant
 resultArray( elementCount ) = Trim$( stringList )
 StringToArray = resultArray( )


klappt auch hervorragend. Jetzt möchte ich diese Array in mehrere(Feldname+ArrayCount) Felder abspeichern:
 
For k = Lbound( resultArray ) To Ubound( resultArray )
  xmldoc.titel(k)=resultArray(k)
 Next

hier hängt der mit folgende Fehlermeldung:

"Attemt to access uninitialized dynamic array"

ich glaube dass Lbound und Ubound für diese Array nicht funktioniert.
Hat jemand eine Idee?

Gruss

Ozan
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 04.06.09 - 10:50:28
Hallo,

Warum fuer das Zerlegen in einen Array nicht die Split-Funktion verwenden?

Was willst Du mit dieser Zeile denn erreichen.
Code
Redim Preserve resultArray( elementCount ) As Variant

Code
Dim resultArray As Variant
Dim Count as Integer

resultArray = Split(xmldoc.Title(0), "+")

If Not IsArray(resultArray) Then Exist Sub   'kein Array

For Count = LBound(resultArray) To UBound(resultArray)
   ' Dein Code
Next


Und Das Feld "Titel" im xmldoc ist hoffentlich ein Feld fuer Mehrfachwerte.

Andreas
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 10:55:17
Am ende kann ich durch die elementCount das letzte Feld ermitteln und entsprechend umsetzten, ich glaube dass das zerlegen auch für spätere Verarbeitung der Daten eine wichtige rolle spielt, z.b sortieren, bzw katalogisieren etc.
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: BigWim am 04.06.09 - 10:56:41
Zitat
Jetzt möchte ich diese Array in mehrere(Feldname+ArrayCount) Felder abspeichern:
 
For k = Lbound( resultArray ) To Ubound( resultArray )
  xmldoc.titel(k)=resultArray(k)
 Next

und mit "xmldoc.titel(k)" legst Du aber nicht mehrere "Felder" an, sondern bestenfalls (im Erfolgsfall) ein "Feld" mit mehreren Einträgen (Textliste).

Wenn Du die Werte in einzelne "Felder" haben möchtest, versuche entweder a) NotesItem oder b) ReplaceItemValue aus NotesDocument

Markus
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 04.06.09 - 10:59:12
Hallo,

Ich zielte eigentlich darauf hin ab, dass bei einem

Zitat
Redim Preserve ... kein Datentyp mehr angegeben wird.

Also

Redim Preserve resultArray(elementCount)
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 11:21:01
Feld "Titel" im xmldoc ist nicht ein Feld fuer Mehrfachwerte. Der beinhaltet

+blidtext+blintext+blidtext+blintext+blidtext+blintext

Mit der Array Zerlegung kann ich das schön aufteilen, bis dahin alles paletti, nur das dann an ensprechend mehrere Felder zu speichern ist mein problem.

Wie kann ich jetzt resultArray loopen und die Werte von [1],[2],...,[n] in mehrere Felder verteilen?
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 04.06.09 - 11:43:21
Versuch mal das

Code
For k = LBound(resultArray) To UBound(resultArray)

  Call xmldoc.ReplaceItemValue("Titel" & CStr(k), resultArray(k)

Next

Andreas
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: BigWim am 04.06.09 - 11:46:25
Wenn Du alle Einträge im Array prüfen mußt, kannst Du Dir auch mal ForAll ansehen.

Markus
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 11:53:59
@Andreas

Fehler bei :

For k = LBound(resultArray) To UBound(resultArray)

Meldung:

"Attemt to access uninitialized dynamic array"

muss der vielleicht anders deklariert werden?
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 04.06.09 - 12:14:37
Versuch doch einfach mal meinen vorherigen Code mit dem Split-Befehl und dann die For-Schleife mit dem ReplaceItemValue.

Andreas
Titel: Re: Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 12:45:22
Hervorragend, funktioniert jetzt, Danke.

Gruss

Ozan
Titel: Re: [erledigt] Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: ascabg am 04.06.09 - 12:47:28
Mit was funktioniert es denn jetzt?


Andreas
Titel: Re: [erledigt] Suchen von rechts nach erste "+" Zeichen -LS-
Beitrag von: Ozan am 04.06.09 - 12:53:01
hier:

Dim stringList As String, delimiter As String
Dim resultArray( )  As Variant
Dim StringToArray As Variant
delimiter="+"
stringList=xmldoc.titel(0)
Dim elementCount As Integer
elementCount = -1
 While ( Instr( stringList, delimiter ) <> 0 )
   elementCount = elementCount + 1
   Redim Preserve resultArray( elementCount ) As Variant
   resultArray( elementCount ) = Trim$( Left$( stringList, Instr( stringList, delimiter ) - 1) )
  stringList = Right$( stringList, ( Len( stringList ) - Instr( stringList, delimiter) ) )
 Wend
elementCount = elementCount + 1
Redim Preserve resultArray( elementCount ) As Variant
resultArray( elementCount ) = Trim$( stringList )
StringToArray = resultArray( )
         
For k = 1 To elementcount
 Call xmldoc.ReplaceItemValue("Titel" & Cstr(k), StringToArray(k))
Next