Man glaubt es kaum das ist tatsächlich lösbar. Aber wie öfter bei dieser Software nicht mit logischem Vorgehen, sondern indem man sich ganz dumm stellt.
Die vorher genannte Variante hat ja jeweils das erste Zeichen durch ein @newline ersetzt und danach den Rest einfach übergangen.
Diese Variante hier:
Set rtnav = rtItem.CreateNavigator
Set rtrange = rtItem.CreateRange
If rtnav.FindFirstString("^") Then
Do
Call rtrange.SetBegin(rtnav)
Call rtrange.SetEnd(rtnav)
Call rtrange.remove
Call rtitem.BeginInsert(rtnav)
Call rtitem.addnewline(1)
Call rtitem.EndInsert
Call rtitem.Update
Set rtnav = rtItem.CreateNavigator
Set rtrange = rtItem.CreateRange
Loop While rtnav.findfirststring("^")
End If
macht das tatsächlich richtig ( unter 6.5.5 ). Jetzt muss ich nur noch rauskriegen, ob sich dieser Teil hier:
' replace every occurence of chr(10) + chr(13) with ^ in getstring
Dim CrLf As String
CrLf = Chr$(13) & Chr$(10) ' Carriage Return and a Line Feed character
getstring = Replace(getstring,CrLf,"^")
noch umgehen lässt indem man das direkt ansteuert, Wenn ja, dann wären sowohl Mehrfachwerte in Feldern, als auch Texte in denen CRLF vorkommen "sauber" darstellbar.
Und NEIN ich verkneife mir jetzt jeden Kommentar zur der Art wie man von IBM hier wenn man logisch denkt aufs Glatteis geführt wird.
' replace every occurence of chr(10) + chr(13) with ^ in getstring
Dim CrLf As String
CrLf = Chr$(13) & Chr$(10) ' Carriage Return and a Line Feed character
getstring = Replace(getstring,CrLf,"^")
Das lässt isch nicht umgehen, zumindest stürzt mein Client da immer mit einem RSOD ab, wenn ich das so ändere:
getstring = Replace(getstring,CrLf,chr$(0))
Also werden wir das halt so schreiben,
getstring = Replace(getstring,CrLf,"°")
und hoffen das niemand auf den Trichter kommt dieses Zeichen hier "°" in seinem Text zu verwenden.