Autor Thema: FindAndReplace  (Gelesen 1424 mal)

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
FindAndReplace
« am: 02.11.05 - 12:57:01 »
Hallöchen,

ich nutze die FindAndReplace-Funktion des NotesRichTextRange-Objekts und habe jetzt folgendes Problem: Ich möchte einen gesuchten Text in einen Text mit Umbrüchen erstetzten. Der komplette Text wird auch ausgetauscht, nur werden die Umbrüche (egal ob Chr(10) oder Chr(13)) gelöscht.

Hier ein Beispielagent:

Code

Sub Initialize

	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim lng_result As Long
	Dim rti As NotesRichTextItem
	Dim s As NotesSession
	Dim str_replace As String
	Dim str_search As String
	
	Set s = New NotesSession
	Set db = s.CurrentDatabase
	Set dc = db.UnprocessedDocuments
	Set doc = dc.GetFirstDocument
	str_search = "Test"
	str_replace = "T" & Chr(10) & _
	"e" & Chr(10) & _
	"s" & Chr(10) & _
	"t"
	Do Until doc Is Nothing
		Set rti = doc.GetFirstItem("Body")
		lng_result = RTIFindAndReplace(rti, str_search, str_replace)
		If lng_result > 0 Then
			Print lng_result & " gesucht, gefunden und geändert"
			Call doc.Save(True, False)
		End If
		Set doc = dc.GetNextDocument(doc)
	Loop

End Sub

Public Function RTIFindAndReplace(rti_source As NotesRichTextItem, str_search As String, str_replace As String) As Long
	
	Dim rtn As NotesRichTextNavigator
	Dim rtr As NotesRichTextRange
	Dim lng_result As Long
	
	Set rtn = rti_source.CreateNavigator
	Call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
	Set rtr = rti_source.CreateRange
	lng_result = rtr.FindAndReplace(str_search, str_replace, RT_REPL_ALL + RT_FIND_CASEINSENSITIVE)
	If lng_result > 0 Then Call rti_source.Compact
	
	RTIFindAndReplace = lng_result
	
End Function


Die Umbrüche sind nach dem Durchlauf nicht da.
Hat jemand eine Idee?

Danke im Voraus
Gruß
Johnson

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: FindAndReplace
« Antwort #1 am: 02.11.05 - 13:05:29 »
Ich weiß nicht ob es daran liegt, aber unter Windows besteht ein harter Zeilenumbruch aus einem Wagenrücklauf- und einem Zeilenvorschubzeichen. Also einem chr(13) & chr(10).

Vielleicht klappt es in dieser Kombination.

Viele Grüße,

Andreas

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: FindAndReplace
« Antwort #2 am: 02.11.05 - 13:23:44 »
Klappt leider auch nicht so richtig.
Die Zeichen werden zwar eingefügt, aber beim Öffne des Dokuments steht der Text in einer Zeile.
Mit Chr(13) und Chr(10) werden die Umbrüche sogar in den Feldeingeschaften bzw. in der TextRun-Eingeschaft angezeigt.
Gruß
Johnson

Offline Roalf

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Ich bin ein speicherrenitentes Programm!
Re: FindAndReplace
« Antwort #3 am: 02.11.05 - 13:36:23 »
guckst du hier:

http://atnotes.de/index.php?topic=25016.0

da steht einiges zu diesem Thema.
Notes: Unbegreifliche Lösungen für unlösbare Probleme

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz