Autor Thema: NotesRichtextNavigator und RTRange  (Gelesen 10690 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: NotesRichtextNavigator und RTRange
« Antwort #20 am: 15.08.05 - 22:11:49 »
Zitat
Bin ja mit diesen Klassen auch nicht so vertraut

Kann ich nachvollziehen; bis vor ein paar Stunden kannte ich auch nur die halbe Whrheit; Dank an Manfred Dillmann für die Nachhilfe   :D

Bemerkenswert finde ich, daß sich offensichtlich nur knapp eine Handvoll für die Anwendung der Klassen interessiert; immerhin aber gute Leute  :D
« Letzte Änderung: 15.08.05 - 22:15:13 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline heini_schwammerl

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 697
  • Geschlecht: Männlich
Re: NotesRichtextNavigator und RTRange
« Antwort #21 am: 16.08.05 - 01:39:49 »
Zitat
Bemerkenswert finde ich, daß sich offensichtlich nur knapp eine Handvoll für die Anwendung der Klassen interessiert; immerhin aber gute Leute  :D
Ich kann zu meiner Verteidigung nur vorbringen das in Bayern heute Feiertag ist. Aber der COdeschnipsel ist schon klasse. Danke dafür.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: NotesRichtextNavigator und RTRange
« Antwort #22 am: 16.08.05 - 06:55:05 »
Zitat
Noch ein Hinweis:
Deine oben geänderte Routine (der Austausch) ist nun nicht mehr "caseINsensitive". Musst Du noch was "dazutun". 

Ja nee, iss klar  ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Roalf

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Ich bin ein speicherrenitentes Programm!
Re: NotesRichtextNavigator und RTRange
« Antwort #23 am: 16.08.05 - 12:28:33 »
Noch ein kleiner Hinweis zu der Ersetztengeschichte:

die funktion notesRichTextRange.FindAndReplace kann nicht nur keine "", sondern (und das finde ich schlimmer)  auch keine mehrzeiligen Strings. Sprich: an eine gefundene Position einen String, der u.a. einem Zeilenumbruch CHR(13) enthält, zu setzen.

Und auch dein Codeschnispel kann das nicht...denn, sobald du an eine Stelle einen Text mit mehr als einer Zeile einfügst, verweigert FindNextString die Arbeit. Auch das rtitem.Update hilft da nicht.
Und das ist wohl der Grund warum FindAndReplace keine Umbrüche verarbeitet. Intern wird diese Funktion wohl auch mit einer Schleife FindFirst/FindNext arbeiten....und deshalb entfernt FindAndReplace kurzerhand alle CR/LF aus dem zweiten Parameter....

Wenn also die gefundene Stelle durch mehrzeilige Teile ersetzt werden soll, muss etwas mehr passieren....bei Interesse poste ich hier gerne den Code.
Notes: Unbegreifliche Lösungen für unlösbare Probleme

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: NotesRichtextNavigator und RTRange
« Antwort #24 am: 16.08.05 - 12:35:13 »
dann lass mal sehen ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Roalf

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Ich bin ein speicherrenitentes Programm!
Re: NotesRichtextNavigator und RTRange
« Antwort #25 am: 16.08.05 - 12:58:16 »
ich traue mich fast nicht diese Code zu Posten....so schwachsinnig und umständlich mutet er an. Aber er ist der einzige der zu dem von mir gewünschten Ergebniss führte:


also, erste Schleife:
.
.
.
   Set rtnav = body.CreateNavigator
   crlfcount = 0
   pos = 0
   If rtnav.FindFirstString(CRLF , RT_FIND_CASEINSENSITIVE) Then
      Do
         crlfcount = crlfcount + 1
      Loop   While rtnav.FindNextString(CRLF , RT_FIND_CASEINSENSITIVE)
   End If
.
.
.

diese holt nur die anzahl der stellen die es zu ersetzten gilt.
das eigendliche ersetzen erfolgt dann über eine doppelte schleife (da es kein FindNthString gibt) :
.
.


   For i = 0 To crlfcount -1
      If rtnav.FindFirstString(CRLF , RT_FIND_CASEINSENSITIVE) Then
         While pos < i
            Call rtnav.FindNextString(CRLF , RT_FIND_CASEINSENSITIVE)
            pos = pos + 1
         Wend
      End If
      Call body.BeginInsert( rtnav,True)
      Call body.APpendText(param)
      Call body.EndInsert   
   Next
.
.
.


----
da ich diese Teile aus einem größeren Zusammenhang kopiert habe ,sind sie in dieser Form nicht getestet. Ich hoffe aber das sie das Prinzip zeigen.
Nämlich das es für jede Position immer wieder mit einem FindFirstString beginnt...und dann mit FindNextString zum Punkt gehangelt wird. (da ja, wie ich oben anmerkte, FindNextString nur noch "habe fertig" zurückliefert wenn vorher ein CHR(13) eingefügt wurde, obwohl es ggf. noch mehr zu finden gäbe,
« Letzte Änderung: 16.08.05 - 13:31:38 von Roalf »
Notes: Unbegreifliche Lösungen für unlösbare Probleme

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: NotesRichtextNavigator und RTRange
« Antwort #26 am: 16.08.05 - 13:22:33 »
Wobei man damit jetzt wieder beim manuellen Hangeln angelangt wäre. Das hatten wir doch schon.
Hmm, wenn man die beiden Methoden kombinieren könnte. So nach dem Motto alles was einfach ist mit FindAndReplace und den Rest dann mit der Methode von Roalf.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: NotesRichtextNavigator und RTRange
« Antwort #27 am: 16.08.05 - 17:56:58 »
@Roalf:

Danke für die Code Snippets; werde ich testen und sehen, wie ich das in den bestehenden Code zu integrieren.

Habe mir überlegt, beim Stamp Documents Feld noch ein paar Varianten einzubauen:

test0 | Hallo Welt  ( auch multiValue möglich mit Hallo;Welt;Tolles;Wetter;heute )
+test1 | Hallo Welt
#test2 | 1
test3 | <<FieldName>>


test0 | Hallo Welt:

wie ReplaceItemValue; erstellt das Feld, wenn es noch nicht vorhanden ist und fügt den String "Hallo Welt" in das Feld ein.


+test1 | Hallo Welt

Hängt den String "Hallo Welt" an das bestehende Feld an


#test2 | 1

addiert den Wert 1 zu dem bestehenden Wert in Feld test2


test3 | <<FieldName>>

Hole einen Wert auf dem Feld FIELDNAME und schreibt diesen in Feld test3

wobei auch Kombinationen möglich sind; wie z.B.

#test3 | <<FIELDNAME>>

addiere den Wert aus FIELDNAME zu Feld test3

Keine Ahnung, ob man so etwas braucht, aber besser man hat, als man hätte  ;D
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz