Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: flaite am 24.10.07 - 16:41:48

Titel: [LotusScript]: split -> String too large Fehler
Beitrag von: flaite am 24.10.07 - 16:41:48
Hi,

wir haben hier ein Rätsel.
Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)
	Const valT = "aaa~~~~111"
	res = Split (valT, "~~~")
	For i = 0 To Ubound(res)
		Print "res(" + Cstr(i) + ")=" + res(i)
	Next
	
	Continue = False
	
End Sub
Als Split Trenner sind 3 ~. Im String selber gibts aber 4 ~ nacheinander. Notes reagiert mit einer Fehlermeldung: String too large.
Ist darüber etwas bekannt?

Danke
Axel
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: koehlerbv am 24.10.07 - 17:46:50
Das Rätsel habe ich jetzt auch, Axel. Erstes Rätsel: res und i sind nicht deklariert  ;D

Aber Spass beiseite: Bis zu
Const valT = "aaa~~~111"
res = Split (valT, "~~")
(oder im String vier, im Split zwei Mathilden) läuft alles wie erwartet (und erzeugt bis zu vier Stings), aber dann knallt es. Ich kann hier auch noch keinen mathematischen Zusammenhang erkennen, warum da etwas überlaufen sollte.

Bernhard
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: MiFi am 24.10.07 - 18:05:50
Hallo Axel,

das Problem liegt in den vier "~~~". Lotus kriegt da die Füsse durcheinander, weil diese vier "~~~~" gleich mehrfach in sich geplittet werden würden. (Notes ist halt doof).

Eine Frage:
warum hast du einen Delimiter mit "~~~~" splittest aber dann mit "~~~"

Gruß
Michael
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: koehlerbv am 24.10.07 - 18:11:27
... das Problem liegt in den vier "~~~". Lotus kriegt da die Füsse durcheinander, weil diese vier "~~~~" gleich mehrfach in sich geplittet werden würden. (Notes ist halt doof).

Diese nassforsche Aussage musst Du jetzt erläutern, Michael (willkommen bei AtNotes!). 3/2 geht, 4/2 auch, aber nicht 4/3? Wo wird da welcher String zu gross??

Bernhard
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: MiFi am 24.10.07 - 18:39:26
Hallo Bernhard,

wiso kann ich Dir auch nicht sagen, ich hatte aber das Problem  schon öfters und konnte es nur dadurch vermeiden, indem ich solches splitten umgangen bin. Ich denke entweder ist die Message total daneben, oder Notes splittet sich zu tode, weil er die Zeichenfolge innerhalb des Delimiters mehrfach findet. (Ist aber wieder nicht logisch zu Suche mit 2) Es ist für mich keine Regel zu erkennen.
In eurem Beispiel:
Bei 4 und Suche mit 2 bekommt man ein Array mit 3 OK
Bei 6 und Suche mit 2 bekommt man aber ein Array mit 5 ??
Ich habe aufgegeben das zu verstehen und benutze eindeutige Trenner für meine Strings die ich dann zerlegen will.

Erläuterst Du mir bitte "nassforsche"  ???

Gruß
Michael
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: flaite am 24.10.07 - 18:41:47
Danke Bernhard.
Mein jüngerer Kollege, im Wii-Tennis am Netz seit gestern leider viel zu gute Kollege Witali, von dem die Frage letztlich kam, reagierte auch ein bischen genervt auf die Antwort von MiFi. Ich dagegen bin inzwischen sowieso Scheiss-Liberal.

Kann man einem Enterprise-System wie Lotus Notes Attribute wie "doof" zusprechen  ??? ;D
Die werden in Projekten von Menschen implementiert. Und zwar verschieden.

Ich hab keine Interesse an Flame-Wars über Computersprachen, nur zur Info.  Java macht es so:
Code
public class Test {
	public static void main (String []args) {
		String valT = "aaa~~~~111";
		String[] res = valT.split("~~~");
		
		for (int i = 0; i<res.length; i++) {
			System.out.println("res[" + i + "]=" + res[i]);
		}
			
	}
}
ergibt:
Code
res[0]=aaa
res[1]=~111

Mit 6 Trennzeichen im Quellstring: 
Code
public class Test {
	public static void main (String []args) {
		String valT = "aaa~~~~~~111";
		String[] res = valT.split("~~~");
		
		for (int i = 0; i<res.length; i++) {
			System.out.println("res[" + i + "]=" + res[i]);
		}
			
	}
}
ergibt:
Code
res[0]=aaa
res[1]=
res[2]=111

 
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: bikerboy am 25.10.07 - 09:30:14
Hmmm eine frage hätte ich da,

warum benutzt ihr so komische Trenner ?

Ich meine es scheint ja immer wieder Probeleme zu geben, wie kommst du zu dem String? Wenn du ihn zusammenbaust kann es auch mal sein, dass du keinen wert zwischen den Delimiters hast?

Nehmen wir an dass du mti 2 Tilden trennst und dann auf einmal keinen Wert dazwischen hast und zack hast du 4 Tilden die deinem Trenner entsprechen und das würde doch auch einen Fehler provozieren.

Oder testen ihr nur die Unzugänglichkeiten von Notes aus ?
Titel: Re: [LotusScript]: split -> String too large Fehler
Beitrag von: flaite am 25.10.07 - 09:39:31
Wenn es in Notes so wie in Java implementiert wäre, könnte ich damit besser leben:

aa~~~~cc

würde bei Split auf ~~ ergeben:
a[0]  = "aa"
a[1] = ""
a[2] = "cc"

Gruß Axel