Domino 9 und frühere Versionen > ND9: Entwicklung

Fehler bei Split bzw. StrToken mit leeren Werten

<< < (3/3)

Jürgen Schomann:
Nochmals vielen Dank für die Hinweise.

Ich hatte schon erwähnt, das dies in Fremandwendungen so vorkommt.
Natürlich muss eine Trennzeichenfolge möglichst falsche Treffer vermeiden und ich würde auch nicht mehrfach gleiche Zeichen verwenden.
Aber trotzdem arbeiten StrToken und Split nicht korrekt.

Peter zu Split("1~~~~~3, "~~")
hier gibt es nur ein richtiges Ergebnis nämlich 1, leer, ~3 wenn von links nach rechts durchsucht wird.
Nach der 1 wird ~~ gefunden, also 1. Wert 1.
Dann wird ab 1~~ das nächste ~~ gesucht und gleich anschließend gefunden, also 2. Wert leer.
Schließlich wird ab 1~~~~ das nächste ~~ gesucht und nicht mehr gefunden, also 3. Wert ~3.

Übrigens hatte ich schon in einer vorhergehenden Antwort den Fall StrToken("1", "+=", 1) ergibt leer erwähnt., der auch falsch ist.

Peter Klett:
Und wie würdest Du dann die Daten

1
~
3

mit Trennzeichen "~~" schreiben?

Damit beweist Du ja, dass meine Aussage zutrifft, dass bei 1~~~~~3 keine korrekte Entschlüsselung möglich ist.

Bei solchen Funktionen verlassen wir uns nicht auf die standardmäßig gelieferten, sondern bauen diese selbst und stellen die über eine Scriptbibliothek in allen Anwendungen zur Verfügung. Vorteil ist, dass man das Verhalten selbst im Griff hat. Allerdings kann man damit auch das o.g. Problem nicht lösen.

Neulich musste ich große Datenmengen auf diese Weise zerlegen. Mit unseren eigenen Methoden brauchte das Script 5 Minuten, habe es dann testweise auf Split umgestellt und brauchte danach 10... Kein weiterer Kommentar.

Jürgen Schomann:
Du hast ja Recht, wir haben auch eigene Funktionen, meine Beispiele sind auch bewusst konstruiert gewesen.

Ich wollte damit ja nur zum Ausdruck bringen, dass die Standardfunktionen nicht korrekt arbeiten.

Replace("1~~~~~3", "~~", "#") egibt ja auch 1##~3, also korrekt von links nach rechts nur Split/StrToken arbeiten eben konsequenter Weise nicht analog. Wenn ja wäre es ja ok.
Und wozu Standardfunktionen, wenn diese doch nicht angewandt werden sollten. Man muss ja nicht jede Standardfunktion selbst nachempfinden.
Dann könnte man ja gleich auf Betriebssystemebene allles bitweise selbst machen.

So nichts für ungut und ein schönes Osterfest.

Peter Klett:

--- Zitat von: Jürgen Schomann am 27.03.16 - 13:45:07 ---...
Ich wollte damit ja nur zum Ausdruck bringen, dass die Standardfunktionen nicht korrekt arbeiten.
...

--- Ende Zitat ---
Das ist auch ein wirklich wertvoller Hinweis. Habe das gerade mal nachgebaut und komme zum selben Ergebnis. Unsere eigene Funktion hat damit keine Probleme. Wenn man bedenkt, dass unsere Funktion mit ein bißchen Kommentar etwa 40 Zeilen lang ist, ist es schon peinlich, dass die Standardfunktion nicht korrekt arbeitet, das ist ja nun wirklich kein Hexenwerk.

Vor Jahren hatte ich schon mal darüber nachgedacht, die eigenen Funktionen, die teilweise noch aus Notes-4-Zeiten stammen, weil es damals noch kein Split usw. gab, durch die Standardfunktionen zu ersetzen, sehe mich nun aber bestätigt, dass es eine gute Idee war, das zu lassen.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln