Lotus Notes / Domino Sonstiges > Projekt Bereich
Welche Schleife wann in Script
Glombi:
Ich weiß nicht, ob es bereits erwähnt habe, daher möchte ich noch auf etwas wichtiges bzgl. der For-Next-Schleife hinweisen:
Die Laufvariable sollte nicht innerhalb der Schleife geändert werden. LotusScript inkrementiert die Laufvariable selbst:
Bsp:
Dim i as Integer
For i = 0 to 6
Print i
Next
erzeugt 0,1,2,3,4,5,6
Dim i as Integer
For i = 0 to 6
Print i
i = i + 1 'DAS SOLLTE MAN NICHT MACHEN !!!
Next
erzeugt 0,2,4,6 !!!
Will man nicht in 1-er Schritte iterieren, kann man dieses mittels Step definieren.
Bsp.
Dim i as Integer
For i = 0 to 6 Step 3
Print i
Next
erzeugt 0.3.6
Andreas
Rob Green:
weitere Hinweise:
- ich würde separat die Reichweite von Variablen in Schleifen kurz in einem kleinen Unterkapitel ansprechen. Ebenso - auch wenn es nicht unbedingt nur in Schleifen ein Problem ist - zusätzlich globale Variablen ansprechen, die auch außerhalb des Schleifenkörpers ihre Gültigkeit nicht verlieren, aber bei einem erneuten Lauf entsprechend neu gesetzt werden müssen, da sie sonst mit dem alten Wert starten, was zu Fehlern führen kann.
- ein beliebtes Spiel ist das Befüllen von Listenwerten in Schleifen. Hier kommt es meiner Erfahrung nach häufig zu Problemen. Beispiel: es gilt im Rahmen einer Schleife mehrer Docs abzuchecken und Ergebnisse festzuhalten. Ergebnis soll sein zB sowas:
"Test A ist ok"
"Test B ist ok"
"Test C ist nicht ok"
Genau da kommen viele ins Schwimmen: der User soll das Ergebnis wie oben visualisiert bekommen. Also mit Zeiulenumbruch. Aber halt ... Problem ... erzeuge ich die Variable so
schleifenkörper
...
Inhalt="Test ist" & Cstr(CheckausDoc) & Chr(10) & Inhalt // oder wars Chr(0)? Bin mir jetzt nicht sicher
....
bekomme ich dummerweise
"Test C ist nicht ok"
"Test B ist ok"
"Test A ist ok"
""
Nehme ich
schleifenkörper
...
Inhalt=Inhalt & Chr(10) & "Test ist" & Cstr(CheckausDoc) // oder wars Chr(0)? Bin mir jetzt nicht sicher
....
bekomme ich
""
"Test A ist ok"
"Test B ist ok"
"Test C ist nicht ok"
Was tun?
check auf ersten Lauf, und ab zweiten Durchlauf Variable anpassen
...
if i<1 then
inhalt = "test ist " & Cstr(CheckausDoc)
else
inhalt = inhalt & chr(0) & "test ist" & Cstr(CheckausDoc)
end if
Hoffe, das war einigermassen verständlich
TMC:
Die Dokumentation "Schleifen in Lotus Script" befindet sich ab sofort unter Best Practices als PDF zum Download:
Best Practices - Schleifen in Lotus Script
Es können aber gerne weiter hier im Thread weitere Anregungen, Verbesserungsvorschläge etc. gepostet werden.
Matthias
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln