Das Notes Forum

Lotus Notes / Domino Sonstiges => Projekt Bereich => Thema gestartet von: TMC am 27.09.03 - 21:18:31

Titel: Welche Schleife wann in Script
Beitrag von: TMC am 27.09.03 - 21:18:31
** Edit 26.01.04 **

Die Dokumentation "Schleifen in Lotus Script" befindet sich ab sofort unter Best Practices als PDF zum Download:
Best Practices - Schleifen in Lotus Script (http://www.atnotes.de/index.php?board=26;action=display;threadid=13504)

** Edit **



Hi,

ich bin noch ein ziemlicher Anfänger in Script, und überlege ständig neu welche Schleife wann zu verwenden, was ist die Auswirkung etc.

Daher vielleicht nicht schlecht das ganze mal "klarzustellen" für Anfänger  ;)

Ich fange mal an:

---
While / Wend

Beschreibung: Ist aus meiner Sicht eine Schleife, die gleichzeitig ein If / Then beinhaltet.

Beispiel:
While (doc.HasItem("test33"))
   Set item = doc.GetFirstItem("test33")
   Call item.Remove
Wend
Erklärung:
Im Beispiel überprüft While, ob das deklarierte Dokument (doc) das Item (HasItem) test33 hat.
Wenn ja: es wird der darauf folgende Code ausgeführt (set item.....)  bis das Wend da steht.
Das ganze wird solange wiederholt, bis doc.HasItem("test33") nicht mehr zutrifft, also kein Item namens test33 mehr vorhanden ist. Wenn nicht mehr zutreffend, dann wird der Code nach dem Wend ausgeführt.
---

Es gibt zwar einige Bücher, aber die finde ich bisher nicht so berauschend. Ich bin da zusehr praxisorientiert.
Ich werde diesen Thread jetzt einfach so nach und nach füllen und für mich selber nutzen, wenn noch jemand Lust hat, bitte gerne auch ergänzen / kommentieren.

TMC

** EDIT **
04.10.03 - 19:50: Aktelle Doku-Draft angehängt
08.11.03 - 16:10: Dokudraft Beta5 angehängt
08.11.03 - 18:00: Dokudraft Beta6 angehängt
09.11.03 - 14:30: Endgültige Version 1.00 angehängt
10.11.03 - 20:20: Version 1.01 angehängt (Minimale Änderungen vorgenommen, siehe History im Dok)
26.01.04 - 22:30: Auslagerung der PDF zu Best Practices (http://www.atnotes.de/index.php?board=26;action=display;threadid=13504)
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 27.09.03 - 21:35:04
ForAll

Beschreibung:: Bedient sich einer Liste / Collection. Es werden also Variablen einer Liste/Collection zugeordnet. Und jeder Eintrag dieser Liste / Collection wird behandelt.

Beispiel:
<to be continued>

Erklärung:
<to be continued>
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 27.09.03 - 21:45:17
Schau Dir mal die verschiedenen Do-Varianten an:

Do ... Loop

Do While ..... Loop

Do Until ..... Loop

Do ..... Loop While

Do .... Loop Until

Damit lässt sich eigentlich alles machen (inkl. While / Wend, welches nur aus historischen Gründen [Ur-Basic] überhaupt dabei ist). Mit den Do-Schleifen lassen sich eigentlich alle in den Theorien beschriebenen Schleifen (Kopfgesteuert - Fussgesteuert oder Endlos) realisieren. Dazu kommt dann nur noch For .... Next als Spezialkonstruktion für einen Zähler und ForAll, welches aus der OO-Welt stammt ("Standard"-Metzode von Listen-Objekten)
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 27.09.03 - 21:50:10
Aha, sieh mal einer an:
Zitat
(inkl. While / Wend, welches nur aus historischen Gründen [Ur-Basic] überhaupt dabei ist).

Ist für mich völlig neu, dass dies mehr historisch ist.

Danke für die Info, interessant......

Ist ja fast wie die @Commands (z.B. @Command([ToolsRunMacro]). Ein Kollege erzählte mir erst letzte Woche, dass dies Überbleibsel aus R3 seihen, wo dies noch ein Menü war ("Tools")........

Na ja, ist jedenfalls ziemlich vor meiner Zeit, aber sollte man als Entwickler wissen.


TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 27.09.03 - 21:55:28
Na, Rückwärtskompatibilität, die für Notes ja geradezu sprichwörtlich ist, hat eben seinen Preis, unter anderem darin, dass ältere Konstrukte durch neue abgelöst werden aber wegen der Kompatibilität eben noch da sind, oder eben wie TootsRunMacro immer noch so heissen, wie damals, als man sie erfand, auch wenn sie unterdessen ganz woanders zu finden sind.

Dafür ....... kann der N6 Client immer noch Notes V1 Datenbanken bearbeiten und man kann problemlos mit alten Clients auch auf einen D6 Server zugreifen. Man versuche mal mit Word2002 ein Dokument von Winword 2 aufzumachen ....... es gibt Leute, die haben die Lotus-Smartsuite nur deshalb installiert, weil WordPro das eben heute noch kann .....
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 27.09.03 - 22:01:43
Das ist ja eben auch ein Punkt, warum Notes/Domino so sympatisch ist.
Klar, als Entwicker muss man das ausbaden mit der Rückwärtskompatibilität - aber damit kann man leben.

In der MS-Welt zittern die Entwickler bei jedem Releasewechsel, bei uns in der Notes-Welt kommen höchsten Freuden/Erwartungen hoch, ob denn nun endlich Punkt XY umgesetzt wurde im neuen Release  ;D

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 27.09.03 - 22:05:41
Nur spassenshalber noch eine Ergänzung:
Unsere heutigen Agents hiessen
- in R2 "Filter"
- in R3 "Macro"
- und ab R4 dann "Agent"

Und - auch wenn das leider völlig ohne Bedeutung ist - privat verwende ich als Textverarbeitung WordPro - das kann halt auch noch AmiPro lesen - und 1-2-3 als Tabellenkalkulation.

Aber - wie gesagt - das ist völlig ohne Bedeutung - leider. Und die Gründe kennen wir ja.

Ciao,
Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 21:07:57
WordPro kann auch noch WinWord V2 Dokumente lesen, man versuche das mal mit einer aktuellen Word-Version (oder richtigerweise wird man ja wohl Wort-Version sagen müssen, wenns eine deutsche Ausgabe ist :-)
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 30.09.03 - 21:12:44
Wozu Schleifen-Konstrukte wenn es If und Goto gibt ? Ist alles überflüssig.

Es lebe Fortran!

Andreas

P.S. Ist nicht ernst gemeint, liegt am Mond! ;)

Apropro Rückwärtskompatibilität: Ich sehe immer noch Anwendungen mit @V2if. Hat nette Effekte, denn es werden alle Conditions ausgeführt, die True sind, wenn ich mich recht 12 Jahre zurückerinnere.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 21:17:29
Dieser Mond heute .... na ja ..... Uebrigens, Fortran war Vorbild, als ca. 1960 Basic kreiert wurde. Damit quasi ururururururururAhn von LotusScript :-)
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 30.09.03 - 21:24:45
Da gabe ich ja was angerichtet mit dem guten, alten Mond.

Guckt Ihr hier:
http://www.sylence.net/mondphase/

Bernhard (der Physik / Astronomie studiert hat ...)
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 21:28:35
Jaja, mit dem Mond hast Du was angerichtet ....... dabei wäre das doch eigentlich das Spezialgebiet von Luna
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 30.09.03 - 21:40:15
@Bernhard:
Stimmt es eigentlich, dass der Mond und die gute alte Erde so durch's All eiern, da der Mond früher (sehr viel früher) Teil der Erde war und durch eine Kollision mit einem Asteroiden abgespalten wurde?

Nur so am Rande der Interesse halber. Danach machen wir auch mit den Schleifen weiter...

Andreas
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 30.09.03 - 22:02:23
Das ist eine These, aber eine der abwegigeren. Eher schon, daß sie sich aus der gemeinsamen "Ursuppe" gebildet haben.
Und: Eine grosse Masse fängt sich halt eben schon mal was ein, gelle ?

Ciao,
Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 30.09.03 - 22:24:11
Gilt eigentlich die Theorie noch vom Urknall?
Hielt sich ja vor ca. 10-15 Jahren immer noch sehr das Gerücht (ähm Hypothese) .... Eine Theorie gibt's ja afaik nicht, denn eine Theorie ist ja afaik was, was schon mal bewiesen wurde...(wenn ich in der Schule gut aufgepasst habe).
--------------

Na ja ich lass mich nicht abhalten, werde so nach und nach trotzdem die ein- oder andere Schleife noch hier beschreiben sobald ich dazu komme.

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 22:45:57
Theorie? Und Bewiesen? Nö, umgegekehrt, wenns bewiesen ist, ists keine Theorie mehr sondern Wissen.

Das urprg. griechische Wort hat mit Sehen zu tun. Die Theoria ist eigentlich die Gesandschaft, also die Gruppe von staatlichen Botschaftern, die zu einem Orakel (bsp. Delphi) geschickt werden, um dort den göttlichen Willen zu erfragen. Sprich, die Theoria wird ausgeschickt, um "die Wahrheit zu sehen", also zu erforschen, was etwas zu bedeuten hat oder wie es ausgehen wird. Zuerst ist die Theoria, die zum Fragen geschickt wird, wenn sie zurück kommt, bringt sie das Wissen mit, und damit ist dann die Theoria erfüllt.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 30.09.03 - 22:46:20
Zurück zum Thema:
Der große Unterschied zwischen der Do While und Do Until Schleife ist, dass bei
Do While die Bedingung am Anfang und bei
Do Until die Bedingung am Ende geprüft wird.
D.h. bei Do Until wird der Code der Schleife mindestens einmal ausgeführt.

Da wir Forall schon hatten: Das ist eine sehr einfache Möglichkeit, über alle Elemente eines Arrays oder einer Liste zu iterieren.

Ich verwende Do While... Loop (bzw. While .... Wend) immer, um durch NotesDocumentCollections zu iterieren:
Beispiel:

set dc = view.GetAllDocumentsByKey
set doc = dc.GetFirstDocument
do while not (doc is nothing)
   ...
  set doc = dc.GetNextDocument(doc)
loop

Hierbei sei noch erwähnt, dass derartiges keinesfalls mit einer For-Schleife und Get NthDocument(i) gemacht werden sollte, da das der absolute Performance-Killer ist!

Andreas
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 30.09.03 - 22:46:30
Yippie, jetzt sind wir wieder bei den Schleifen ;-)  (Big Bang würde übrigens auch dazu gehören ;-)

TMC, wenn Du Hilfe brauchst für Deinen Beitrag, laß' wissen.
Vorschlag für das, was m.E. unbedingt 'rein muß: "Wie komme ich wieder 'raus?"

Bernhard (auf dem Weg ins Bett)
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 22:53:18
Glombi, das stimmt aber nicht.

Sowhol Do while wie auch Do Until sind sogenannte kopfgesteuerte Schleifen: heisst, die Bedingung wird vor der Schleife geprüft, und die Schleife wird gegebenenfalls nicht ausgeführt. Der Unterschied ergibt sich aus der Wortbedeutung:

Do while: Tue solange
Die Schleife bricht ab,  sobald die Bedingung nicht mehr stimmt, oder wird nicht durchgeführt, wenn die Bedingung von Anfang an falsch ist.

Do until: Tue bis
Die Schleife bricht ab, sobald die Bedingung erfüllt ist, oder wird nicht ausgeführt, wenn die Bedingung von anfang an erfüllt ist.

Fussgesteuerte Schleifen haben die Bedingung beim loop:

Do
.....
loop while

oder

Do
.....
loop until

Diese Schlaufen werden also in jedem Falle einmal durchlaufen, egal wie die Bedingung ist. Dabei gilt für die Bedingung dasselbe wie oben:

Loop while: Drehe solange wie ....

Loop until: Drehe bis .....
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 30.09.03 - 22:58:45
@Semeaphoros:
Du hast natürlich recht!

Um diese Uhrzeit sollte ich besser nix mehr posten. Sorry!

Andreas (auch auf dem Weg ins Bett)
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 30.09.03 - 23:00:11
/ot an
@Semeaphoros: das genau dachte ich auch, aber 2 Physik/Chemie-Lehrer hatten uns afaik was anderes erzählt (war so Mittelstufe auf'm Gym...). Ich dachte auch immer Theorie sei eine "Überlegung" und der Auslöser, warum man einen Versuch macht und aus dem Versuch resultiert *hoffentlich* der Beweis.
Damals wurde uns afaik erklärt:
 - Hypothese sei das was ich jetzt als Theorie beschrieben habe
 - Theorie sei Ein Ergebnis des Versuches (was ja auch wieder den griechischen Ursprung "sehen" verdeutlicht: Ganz früher haben ja die Wissenschaftler nicht selbst Szenarien für Versuche aufgebaut, sondern wirklich in der Natur >beobachtet<.).
Aber das endet jetzt wahrscheinlich in Wortklauberei.... Und ich glänze nur mit Halbwissen.
/ot aus

Danke für die Hinweise Glombi.

Und danke für den Hinweis Bernhard "wie komm ich wieder raus", möchte ich auch noch mit einbauen.


TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 30.09.03 - 23:01:18
Zitat
Bernhard (auf dem Weg ins Bett)

Zitat
Andreas (auch auf dem Weg ins Bett)


Leute, Leute - nix mißverstehen - da sind hunderte Kilometer dazwischen !!!!!!!
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 30.09.03 - 23:02:55
Hey, moment, habt Ihr eigentlich gemerkt, dass wir innerhalb von  33 Sekunden gleich 3 Posts in diesem Thread gemacht haben? Das soll uns erst einmal jemand  nachmachen.

Gute Nacht allerseits
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 30.09.03 - 23:06:46
Bernhard, gut dass Du das klargestellt hast  ;)

Jetzt aber endgültig: Gute Nacht!
Andreas
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 30.09.03 - 23:56:45
nun wieder im Topic  ;D

Habe schon mal den bisherigen Input im attachten Word-Doc zusammengefasst (Draft!!).

Insbesonders simple Praxis-Beispiele wären noch hilfreich zu

- ForAll
- For...Next
- Do...Loop
- Do Until...Loop
- Do...Loop While
- Do....Loop Until

Danke,
TMC

** EDIT **
Anhang hier gelöscht, aktueller Anhang ist im ersten Posting
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 00:22:02
Wow, sieht schon ganz gut aus.

Beim Text über die Kopfgesteurten Do Schlaufen schreib sie vielleicht aus, nicht so kurz, wie ich das tat:

Do while ...... loop
Do until ...... loop

so wie das auch bei den fussgesteuerten der Fall ist.

Uebrigens, while ... wend gehört auch zu den kopfgesteuerten, währen for ... next zu den fussgesteuerten gehört.

do ... loop und forall passen nicht in dieses Schema, wobei gleich anzumerken ist, dass do .... loop von vielen Leuten eh als schlechte Struktur angesehen wird, da man die Schlaufe "gewaltsam" abbrechen muss, indem man mit einem exit loop aus der Mitte rausspringen muss. In vielen Theorien ist ein solches Verlassen einer Schlaufe schlichtweg verboten: Eine Schlaufe darf genau einen Ausgang haben. Und auch wenn ich die Ausnahme zulasse, vermeide ich es tatsächlich, bei einer Schlaufe einen zweiten Ausgang ..... oder einen Ausgang in der Mitte (wie er für do .... loop als einziger möglich ist) zu verwenden.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 01.10.03 - 00:30:55
danke für Deinen sehr hilfreichen Input Semeaphorus!
Werde ich noch einarbeiten.

by the way eine Frage an Dich (hab hier schon irgendwo gelesen, dass Du Dich früher verstärkt mit Sprache beschäftigt hast, wenn ich mich nicht irre):

Was ist richtig(er):
 - Schleife
 - Schlaufe
Ich persönlich sage unbewusst Schleife dazu.

Gruss,
TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 01:18:24
Nein, Du irrst nicht.

Trotzdem kann ichs nicht auswendig beantworten .... aber der Etymologieduden bestätigt meine Vermutung:

Schlaufe: südwestdeutsch uns scheizerisch, mundartlich, ältere Form von Schleife, im Hochdeutschen nur noch in Spezialbedeutungen wie "Lederring", "feste Schlinge", zB am Gürtel oder Skistock.

Damit ist beides dasselbe Wort und es hängt offenbar davon ab, wo Du wohnst, welches Du lieber verwendest und ob Dein Sprachstand eher etwas älter oder jünger ist *smile*
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 03:40:49
Hm, da hab ich grad eine interessante Erscheinung gehabt:

Es sieht so aus, dass innerhalb einer Forall-Schlaufe/Schleife :-) kein Loop möglich ist. While Wend hat aber funktioniert, das ist eher seltsam, müsste aber wohl noch überprüft werden.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Don Pasquale am 01.10.03 - 09:32:37
@TMC,

da will ich auch gerne mein Scherflein beitragen ,
ich habe mir aber auch das einfachste rausgesucht.

For.. Next

Die iterative Schleife oder auch Zählschleife genannt

Die einfachste Schleifenform, die jeder kennt ist
wahrscheinlich die folgende. Dabei wird der Code
der zwischen For und Next befindet wiederholt.
Das i kann dabei durchaus als Grundlage für irgendwelche
Berechnungen dienen oder auch ignoriert werden.
Code
' Alle Zahlen von 1 bis 100
For i = 1 To 100
   Print i   
Next
   
Schleifen lassen sich schachteln, dabei muss beachtet
werden, dass sich ein Next _immer_ auf das vorherige
For bezieht
also :
Code
   'Alle möglichen Tupel
   For i = 1 To 10
      For j = 1 To 5
         Print "Tupel " & i & j
      Next 
   Next 

und nicht:
Code

   'Alle möglichen Tupel
   For i = 1 To 10
      For j = 1 To 5
         Print "Tupel " & i & j
      Next i
   Next j
 
  
Daraus folgt, dass die Bezeichner i und j hinter dem
Next auch weggelassen werden können.


Die Schrittweite
Die Schrittweite bei den bisherigen Beispieln war immer
1.  Sie kann aber auch Negativ sein, wie bei einem
Countdown :
Code
'CountDown   

   For i = 10 To 1 Step -1
      Print i
   Next
                Print "Start der Raumpatrouillie Orion"

Die Schrittweite kann aber auch jeden beliebigen
anderen Wert annehmen, z.B. 0.1

 
Code
  
   Dim Start As Long
   Dim Ziel As Long
   Dim Schrittweite As Long
   Start = 1.1
   Ziel = 2.4
   Schrittweite = 0.1

   For X = Start To Ziel Step Schrittweite
  Print x    
   Next



Der Befehl Step ist also eine Option. Deswegen wird er meist
in eckige Klammern gesetzt.

For [Step]
Next


Ciao
Don Pasquale
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 10:34:33
Zu meinem oben genannten Problem mit loop innerhalb einer Forall-Schleife: da war der Fehler zwischen Tastatur und Rückenlehne zu suchen. In der Hitze des Gefechtes hat mir wohl eine andere der run ein Dutzend Programmiersprachen, die ich kenne, einen Streich gespielt und ich hab versucht den Do -- Loop mit dem Keyword Loop einzuleiten .... typisch, wenn man im Gehetz rasch noch eine Korrektur machen muss ....

Experimentieren in Ruhe ergab dann, dass Lotusscript problemlos und korrekt Schlaufen verschachteln kann.

Sorry für die Fehlmeldung
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 10:47:43
Zwei weitere Punkte, die irgendwie Aufnahme oder Ergänzung verdienen:

1:
Wie Bernhard schon angedeutet hat, der Ausstieg aus der Schlaife (hehe, der sprachliche Kompromiss :-) sollte besonders hervorgehoben werden: Sprich, man sollte sich jederzeit bewusst sein, welches die Abbruchbedingung ist und ob sie überhaupt erreicht werden kann (in der theor. Informatik ist das dann eine Frage der Korrektheit des Programmes).

2:
Ein ganz besonderer Hinweis, welche die gestellte Frage "Welche Schleife ..." ein wenig auf die "philosophische" Seite bringt: Bis zu einem grossen Teil ist die Wahl der Schleife eine Frage des Geschmacks, der Gewohnheiten und vielleicht auch eine  Frage, wie gut der Compiler welche Schleife zu übersetzen mag (also schliessclich eine Frage von Effizienz des Codes und Performance). Es lässt sich schliesslich zeigen, dass fast alle Schlaufen sich logisch in fast jede andere Sorte von Schleife umsetzen lassen. Ein For-Next Loop lässt sich ohne weiteres durch eine While-Wend (und damit durch gleichbedeutend do while -- loop) ersetzen usw. usw. Als mir gestern das Einsetzen eines do --- loop until nicht gelungen ist, hab ich es kurzerhand durch ein weniger elegantes (im gegebenen Fall) while --- wend ersetzt, also selbst fussgesteuerte Schlaufen lassen sich durch kopfgesteurte Schleifen ersetzen. Etwa so:

Ich wollte:
ExitFlag=False
Do
Rem ....... hier der produktive Code, der irgndwo das Exitflag auf True setzt und damit die Abbruchbedingung gibt
loop until ExitFlag

Ersetzt durch
ExitFlag=False
While (Not ExitFlag)
Rem ....... hier der produktive Code, der irgndwo das Exitflag auf True setzt und damit die Abbruchbedingung gibt
Wend


Ok, ok, eingefleischte C-Leute (und andere) würden da natürlich sowieso mit einem Do --- loop und einem Exit Loop arbeiten, das wiederum wäre aber ein gravierender Verstoss gegen die ursprünglichen Grundregeln der strukturierten Programmierung.

PS: Ich hab versucht, diesmal allen Sprachregionen gerecht zu werden und die Schlaifen etwa gleichmässig auf den Text verteilt ....... :-)))
Titel: Re:Welche Schleife wann in Script
Beitrag von: Rob Green am 01.10.03 - 18:53:43
Zwischenfrage: habt ihr noch vor, zur Perfomance der Schleifen etwas zu sagen? Sonst kram ich in einigen Blogs herum, wann man unter Perfomance Gesichtspunkten welche Schleife in Lotus Notes nehmen sollte. Gibt so 3-4 Untersuchungen, und wenn mich nicht alles täuscht in einer Notes PDF Datei, dessen  Titel ich nicht genau weiß (kann Inside Notes sein, muß aber nicht).
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 01.10.03 - 20:05:35
Performance wäre eine hochinteressante Frage! Das könnten wir ja auch mit eigenen Messungen untermauern.
Jetzt kommen wir aber ggf. vom Hundertsten in Tausendste (warum aber auch nicht), denn innerhalb der Schleife könnte ja sowas wie
Set doc = coll.GetNthDocument (iLoop) vorkommen,
was ja bei grossen Collections der absolute Performancekiller ist.
Sollte man vielleicht mit erwähnen.

Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 01.10.03 - 20:53:07
Hey, prima, da tut sich ja echt was  ;D

Dank Euch allen für die Unterstützung. Werde alles noch einbauen in die Doku.

@Rob: das wäre prima wenn Du da was hast.

Meinetwegen wird das Word-Doc (bzw. wenn fertig PDF) zu Schleifen auch 100 Seiten dick, solange alles übersichtlich bleibt.
Die Schleifen können ja in Kap. 1 nur kurz und knapp erklärt werden mit 1 Beispiel, und ab Kap. 2 gehts dann in die Tiefe.....
Na ja mal schauen....

Grüße,
TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 01.10.03 - 21:16:41
Rob: Literatur zu Schleifenperformance zu suchen dürfte sich lohnen, ich hab jedenfalls keine Ahnung, wie sich die Schleifentypen dahingehend unterscheiden.

Normalerweise ist das ja auch eher ein untergeordneter Punkt.

TMC: Ich denke, irgendwo ist sicher der Hinweis angebracht, dass die Performance des Schleifeninhaltes einen ganz erheblichen Einfluss auf die Gesamtleistung des Systemes haben kann, denn schliesslich isit die Schleife ja dazu da, Code repetitiv und ggf. auch in riesiger Anzahl durchlaufen zu lassen. Die Performance von Schleifeninhalten zu verbessern, lohnt sich also sehr rasch einmal. Das berühmte und hier auch schon mehr als einmal erwähnte Beispiel ist der Fall vom GetNthDocument in den verschiedenen Kollektionen.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Rob Green am 02.10.03 - 10:17:49
so, bißerl rumgekramt und das zB gefunden

- Forall gegen For Loops
http://www.breakingpar.com/bkp/home.nsf/Doc!OpenNavigator&87256B280015193F87256D16005D9096

- Test For gegen While Schleife
http://www.basicthinking.de/blog/archive/000059.htm

- nochmals Forall gegen For Loops
http://dewalick.dominodeveloper.net/dewalick/home.nsf/perm/LOG-2003050500/?open
- dazu (habs nun auch woher:"Perfomance Considerations for Domino Applications" (Redbook?)) auch der Kommentar:
There is small chapter about Forall and Arrays:
Use Forall Instead of For in Referencing Array Elements
Forall loops are faster in handling arrays than For loops.
Forall is 75 percent faster than For when referencing all elements in a
1-dimensional numeric array, and 50 percent faster when referencing
elements in a 2-dimensional array. Similar performance improvements
occur in arrays with higher numbers of dimensions.
String arrays achieve somewhat less performance improvement than
numeric arrays, but these are still significant.

- measuring script performance
1. http://www.ferdychristant.com/fchristant/homepage.nsf/archive/20030325-0812%20AM?OpenDocument&count=-1

2. http://www.ferdychristant.com/fchristant/homepage.nsf/archive/20030328-0657%20AM?OpenDocument&count=-1

- perfomance testing
http://www.eview.com/eview/viewr5.nsf/e640f630a3361f84852568f600070fd3/61fb8d0e2748d24c85256a55007c9543?OpenDocument
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 02.10.03 - 23:55:57
cool, prima Links @Rob.
Super hilfreich.

Nun liegt es an mir, den Input in die Doku reinzubringen.

Ich werde das demnächst mal angehen.
Mein Wunsch ist es ja, hier im Forum das erste Projekt mit "Erledigt" zu setzen  ;D
Also hier demnächst eine PDF reinzustellen und sagen zu können "That's it".

TMC

ich bitte jeden um weitere Tipps, Hilfen, Beispiele.....
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 03.10.03 - 00:12:00
Ja, weitere Beispiele wären wirklich noch nötig. Ich hab schon in einem anderen Thread versucht, einen Querverweis zu machen, werde drauf achten, die Leute darauf aufmerksam zu machen. Bin gespannt auf das Büchlein.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 03.10.03 - 00:14:00
Noch etwas, bis jetzt ist es vielleicht noch zu sehr ein Spezialthema, aber sieht oder wünscht jemand, dass man aus soetwas mit noch etwas mehr ein Thema machen würde für die Developer 2004 nächsten Februar? Ich könnte das Thema dort aufgreifen und eine Session dazu anbieten. Bisher ist noch alles möglich, es gibt noch kein Programm für die Veranstaltung, also beste Zeit, um Wünsche anzubringen.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 03.10.03 - 00:34:14
Zitat
aber sieht oder wünscht jemand, dass man aus soetwas mit noch etwas mehr ein Thema machen würde für die Developer 2004 nächsten Februar?

Na ja, meine Meinung:
Ist wohl zusehr ein Spezialthema, als dass man das innerhalb 1 Stunde (?) mit 10-20 Powerpoint-Folien abhandeln könnte.
Klar, höchstens man würde die Quintessenz draus ziehen und Schwerpunkte setzen (kurzer Überblick, was killt Performance, und welche Schleifen decken die bekanntesten Fälle performant ab, etc.).

Insofern wäre das möglich. Sollte halt einige Highlights bieten (beim Überfliegen von Rob's Links hab ich gesehen da wäre durchaus was zu berichten).

Mein persönliches Fazit:
Würe eher "aus dem Ärmel herausschüttelnd" rüberkommen, ich schätze es gibt zig andere Themen, die Leute interessiert, wenn diese dafür viel Geld zahlen und von weit her anreisen.

TMC

Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 03.10.03 - 00:52:15
Sicher, da müsste noch was dazu, deshalb frage ich ja auch, wie die Wünsche sind. Performance könnte aber ein hübsches Thema abgeben und da sind nun mal die Schleifen auch eine wichtige Angelegenheit. Ich hab Robs Links noch nicht angesehen, werde das aber bestimmt tun und dann entscheiden, ob ich den Vorschlag unterbreiten soll.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 03.10.03 - 18:06:12
OK, hier mal ein aktuelles Problem von mir:

Do Until doc Is Nothing
Set nextdoc = dc.getnextdocument(doc)
   'Docwerte einlesen
   v_maske = doc.Form(0)
   v_freigabe = doc.Dat(0)
   'Wenn Maske nicht frm_12 und Freigabe leer, dann LOOP
   If v_maske Is Not "frm_12" & v_freigabe = "" Then
     Loop
   End If
   ...........
   .........
Loop


Hier will ich in der If-Abfrage die Schleife wieder von oben beginnen, also hab ich ein Loop reingesetzt, allerdings meckert da der Designer.
Daher die Frage: Wie kann man bei dieser Schleife in der Mitte wieder hochspringen, also den Loop mittendrin ausführen?

TMC

*Edit*
Ich habe das ganze jetzt über eine View-Selection gelöst ist aber auch nicht das wahre....
Siehe auch diesen Thread (http://www.atnotes.de/index.php?board=7;action=display;threadid=11418).
Titel: Re:Welche Schleife wann in Script
Beitrag von: Axel_Janssen am 03.10.03 - 20:10:24
OK, hier mal ein aktuelles Problem von mir:

Do Until doc Is Nothing
Set nextdoc = dc.getnextdocument(doc)
   'Docwerte einlesen
   v_maske = doc.Form(0)
   v_freigabe = doc.Dat(0)
   'Wenn Maske nicht frm_12 und Freigabe leer, dann LOOP
   If v_maske Is Not "frm_12" & v_freigabe = "" Then
     Loop
   End If
   ...........
   .........
Loop

Geht sowas in irgendeiner Programmiersprache? Ich glaube nicht.
Sagen wir mal eine Schleifenkonstrukt und ein Bedingungskonstrukt (sprachliche Anlehnung aus Begriffen von R. Mann) bestehen aus einem Kopf einem Rumpf und einem Endmarkierer (weiss nicht ob das jetzt so korrekt ist. V.a. Endmarkierer sieht wie eine spontane Entdeckung von mir aus).
Schleifenkonstrukt
Bedingungskonstrukt
Kopf
for i = 1 to 15 step 2
if i > 4 then
Rumpf
Alles was zwischen Kopf und Endmarkierer steht.
Alles was zwischen Kopf und Endmarkierer steht.
Endmarkierer (schliess-Tag für Kopf)
Loop
end if

xml 101: <tag/> = <tag></tag> (sogenannter empty-tag)

<kopf_a> Do Until doc Is Nothing
<rumpf_a/>   v_maske = doc.Form(0) [...] etc.
<kopf_b>   If v_maske Is Not "frm_12" & v_freigabe = "" Then
<rumpf_b/> == </kopf_a> Loop
</kopf_b>End If
</kopf_a>Loop


Die Rümpfe kannst du nicht einfach so "quer schachteln". Das geht nur ineinander nach dem Russischen Puppen Prinzip. Also jedes in einem Schleifenkonstrukt oder Verzweigungskonstrukt begonnene Schleifen- oder Verzweigungskonstrukt muß auch innerhalb des Schleifen oder Bedingungskonstrukt, in dem es geöffnet wurde, geschlossen werden. ;D

Du kannst doch einfach so was machen wie:
Do Until doc Is Nothing
Set nextdoc = dc.getnextdocument(doc)
   'Docwerte einlesen
   v_maske = doc.Form(0)
   v_freigabe = doc.Dat(0)
 
   rem genau umgekehrt
   If v_maske Is "frm_12" & v_freigabe <> "" Then  
...........
   .........
   End If
   Loop


Bei Schleifen kommen bei mir immer 2 Gedanken in den Kopf:
1. Muss ich das irgendwie kommentieren oder ist das selbsterklärend
2. Schreibe möglichst wenig Zeilen innerhalb des Schleifenrumpfs, weil es sonst unübersichtlich wird. Wenn nötig auslagern von code in Subroutinen oder Funktionen mit sprechenden Namen.

@Semaphoros: Ein wichtiges Thema für Performance sind nicht nur meiner Meinung nach Tools zum Aufspüren von Performance-Bottlenecks (Profiler oder ähnliches). Seitdem ich damit in Java arbeite, weiss ich das ich vorher nichts über Performance wusste. Und Kodierungspraktiken, die ein leichtes Aufspüren von Performance-Bottlenecks ermöglichen (sprich kein Spagetti-Code oder vielleicht besser Objekt-Orientierung.

In Eclipse wird man übrigens wg. so Dingen wie "wie ist nochmal die Schleifensyntax" nicht aus dem Büroschlaf gerissen. Da tippt man einfach for oder while ein, drückt Strg + Leertaste, wählt den Typ der Schleife aus (ich hab ein paar homegrown dabei) bekommt den code in den Editor mit schwer zu beschreibenen Textmarkierern, über die man dann die spezifischen Namen der Variablen eintippt. Geht alles völlig reibungslos ohne nervige popup-Boxen.  

Gruß Axel
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 03.10.03 - 20:23:51
OK, danke Axel.
Das "genau umgekehrt" war die logische Konsequenz :)

Mich hat's nur generell interessiert und Du hast auch die Antwort dafür:
Zitat
Geht sowas in irgendeiner Programmiersprache? Ich glaube nicht.
Ich wußte das bisher nicht, aber ist gut zu wissen  ;)

Zitat
In Eclipse wird man übrigens wg. so Dingen wie "wie ist nochmal die Schleifensyntax" nicht aus dem Büroschlaf gerissen. Da tippt man einfach for oder while ein, drückt Strg + Leertaste, wählt den Typ der Schleife aus (ich hab ein paar homegrown dabei) bekommt den code in den Editor mit schwer zu beschreibenen Textmarkierern, über die man dann die spezifischen Namen der Variablen eintippt. Geht alles völlig reibungslos ohne nervige popup-Boxen
*neidisch rüberschauend zu den Eclipse-Jungs*

Wie auch immer, danke für die Tipps Axel.

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 03.10.03 - 20:28:45
Noch ein Nachtrag zu meinem letzten Problem wegen "Loop in the middle" (:-))

Grausam aber wahr könnte man da doch einen goto durchführen (kenn ich noch von good old C64 Basic Zeiten :-))?
Nur ne Idee....

TMC

*Edit*
Na ja, spricht wohl gegen diese Rule von Axel:
Zitat
Also jedes in einem Schleifenkonstrukt oder Verzweigungskonstrukt begonnene Schleifen- oder Verzweigungskonstrukt muß auch innerhalb des Schleifen oder Bedingungskonstrukt, in dem es geöffnet wurde, geschlossen werden.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 03.10.03 - 21:02:36
Zu TMC - loop in the middle

Axel hat Dir schon gesagt, dass das nicht geht und dass das wohl nirgends geht. Deine "Umgehung" mit einem Goto ist das, was man schlussendlich tatsächlich machen kann, aber bitte nicht mit einem Goto, erstens sieht es nicht besonders modern aus (das würd mich aber nicht stören), zweitens durchbricht es ganz klar und frappant die  strukturierte Programmierung, drittens würde ein solcher Absprung aus der Schleife einige Compiler ins Schleudern bringen: nicht jeder merkt, dass Du dadurch die Schleife verlässt (mindestens bei ältern Compilern ist einem das noch gelungen) und es bleiben dann im Memory nicht abgebaute Kontrollstrukturen bestehen: ein Memory - Leak.

Wenn Du Deine If-Bedingung mit einem NOT versiehst, sie also logisch umdrehst, dann kannst Du aus dem IF heraus den Loop verlassen, und dafür gibts nen Befehl: EXIT SUB (ok, ist eigentlich ein spezialisiertes Goto und damit etwa das, was Du Dir ausgeheckt hast, aber hier weiss der Compiler, dass Du die Schleife verlässt)

Zu Axel:
Vielen Dank für diese Gedanken zur Performance, ich muss mal das Wochenende durchgehen lassen, und dann werd ich wohl tatsächlich ernsthaft daran denken, so eine Session zu bauen.

Was Du da von Eclipse erzählst, kann Notes-Leute schon zum Lechzen bringen (siehe TMC). Ich kenn das allerdings im Delphi zum Beispiel schon seit ewig, und schon bevor die IDEs solche schönen Sachen gebracht haben, haben verschiedene elegante Editoren das schon gekonnt. Ich vermisse das laufend im Notes (nebst der enorm schlechten Editier-Unterstützung für Custom Classes).

Noch was: einen Schleifenkörper möglichst kurz zu halten ist nicht nur eine Frage der Uebersicht, sondern auch der Performance. Deshalb ist auch Vorsicht geboten mit Aufruf von Subroutinen anstelle der Ausprogrammierung einer Sequenz, da Subroutinen notorische Performance-Verschwender sind (keine Ahnung, welchen Preis man dafür in LotusScript zahlt, um das gleich mal klarzustellen).
Titel: Re:Welche Schleife wann in Script
Beitrag von: Axel_Janssen am 03.10.03 - 21:07:52
Grausam aber wahr könnte man da doch einen goto durchführen (kenn ich noch von good old C64 Basic Zeiten :-))?
Nur ne Idee....
Hell Nooo. (http://saloon.javaranch.com/ubb/graemlins/shocked2.gif)

http://www.acm.org/classics/oct95/

Goto ist nicht einfach grausam sondern ein Synonym für das Ende der Zivilisation. Wenn ich das Wort höre, kommen mir unverzüglich Bilder von marodierenden, plündernden, vergewaltigenden Milizen an der afrikanischen Westküste in den Sinn.  :-[
 

 
 
Titel: Schocker GOTO
Beitrag von: TMC am 03.10.03 - 21:50:32
Ok, sorry für meinen Schocker am Freitag Abend:
GOTO

War mir nicht bewußt dass das so derart Anti-Sinnvoll-Programmiernd ist  ;D
Zitat
Goto ist nicht einfach grausam sondern ein Synonym für das Ende der Zivilisation. Wenn ich das Wort höre, kommen mir unverzüglich Bilder von marodierenden, plündernden, vergewaltigenden Milizen an der afrikanischen Westküste in den Sinn.
;D
Krass. Da hab ich ja was angestiftet.
Und trotzdem kann ich es nicht lassen, ein good old Befehl vom 64er:
10 Print "GOTO sucks. sollte never verwendet werden."
20 goto 10
 ;D Und nun blinkt der Bildschirm ohne Ende.....

Ist wohl ein leidiges Überbleibsel aus Basic (?), das so über die Jahre mitgezogen wurde.


TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 03.10.03 - 22:13:18
Axel, reihe Dich nicht unnötig in die ewigen Nörgler, Besserwisser und so weiter ein.

Natürlich ist ein Goto häufig nicht elegant.

Ich staune aber bald schon seit Jahrzehnten, wie Leute über Gotos herziehen können, und gleichzeitig Konstrukte verwenden wie (in LS umgesetzt):

Do
......
Exit Loop
.....
Loop

Syntatkisch sind all diese Exit-Loop/Exit-Sub (schlimm !!!) Exit-Forall nichts anderes als verkappte Gotos, und dieselben, die auf der einen Seite die Gotos "verarschen", predigen gleichzeitig religiös, Schleifen dürfen nie mit Bedingungen versehen werden, sondern immer mit einem Exit verlassen werden .... Da verstehe ich dann die Welt nicht mehr, bzw. muss feststellen, dass die Leute wohl von Grammatiken und Syntax/Synonymen und so was überhaupt keine Ahnung haben (ja, tatsächlich, hier überlappt der ehemalige Sprachlehrer mit dem Teil in mir, der mal an der FeU auch noch theooretische Informatik machen musste, die praktische hat ihn aber mehr interessiert :-)

Stimmt, falsch eingesetzte Gotos ergeben schrecklichen Code. Ich kann aber auch ohne Gotos gleich schlechten Code schreiben. Und manchmal sind die Gotos (implizit oder explizit) ganz einfach notwendig.

Da kommen dann noch ein paar andere Sachen dazu: Jede Schleife wird, wenn wir ihr im Assembler wieder begegnen, durch mindestens einem konditionellen Jump (= Goto !!) realisiert, sprich ein Goto. Ein If - Else Konstukt bedingt im Minimum zwei Jumbs ( = Goto !! ) und so weiter .......

Also bitte zuerst überlegen, bevor man irgendwas in Bausch und Bogen verwirft.

Und ebenso bitte überlegen, wenn man mal ein Goto wirklich brauchen sollte, was aber bitte auch für die verkappten Gotos, die in der Verkleidung eines Exit daherkommen, gelten muss!
Titel: Re:Welche Schleife wann in Script
Beitrag von: Axel_Janssen am 03.10.03 - 23:13:43
@Semaphoros,

1. Dykstra sagt in diesem paper, dass gotos in Assembler eine Berechtigung haben.
2. Deine strukturierte Programmierung 201 Beiträge sind wertvoll.  
3. halte ich deine Reaktion für hm irgendwie übertrieben.
4. Meine alte Paranoia kocht hoch, dass Leute mit fundierter Informatikausbildung mich als
- Freund von Java
- Freund von Webservices
- Freund von JSP/Servlets
- ca. 5 und steigend grösseren Java open Source frameworks
- Eclipse user
- OO-Pattern-Freund
- don't code take google
- Unified Process Anhänger,  
als irgendwie neureichen Modegeck ansehen.
 
Das ist aber einfach nicht wahr, weil:
- ich habe meinen Mc Conell, Code complete  
- ohne Studium von fundamentalen Prinzipien von verteiltem Rechnen und Datenbanktheorie und -praxis und 120 weitere Sachen helfen einem weder SOAP noch Enterprise Java Beans irgendwie weiter. Das ganze Marketing-Geseiber es würde einfacher und man bräuchte dieses ganzes low level Quatsch nicht, ist komplettester Unsinn.
 
Auf diese Tour bekommt man auf jeden Fall keine akzeptabel performanten Anwendungen hin und vermutlich noch nicht einmal lauffähige Anwendungen. Man muß oft eine Etage in den Keller gehen und sich damit auseinandersetzen, was dort passiert.  
Man kann auch nicht OO programmieren ohne ein vernünftig strukturiert programmieren zu können.

noch was:
Zitat
Noch was: einen Schleifenkörper möglichst kurz zu halten ist nicht nur eine Frage der Uebersicht, sondern auch der Performance. Deshalb ist auch Vorsicht geboten mit Aufruf von Subroutinen anstelle der Ausprogrammierung einer Sequenz, da Subroutinen notorische Performance-Verschwender sind (keine Ahnung, welchen Preis man dafür in LotusScript zahlt, um das gleich mal klarzustellen).
Der Aufruf von Subroutinen kostet einen gewissen Performance overhead, ok. Das wird beim erzeugen von lustigen layers of indirection mit Klassen tendentiell noch verstärkt. Und wenn man dann noch nifty die Objekte auf verschiedene Tiers verteilt und coole xml-Layer verwendet möglicherweise potentiert (und das ist dann oft ein Problem).  
Solange man aber keine vernünftigen empirischen Daten hat, wie lange jetzt Methoden/Funktions/Remote SOAP_RPC-Aufruf A dauert und sich überlegt, ob der overhead signifikant für den business case ist, handelt es sich dabei um eben theoretische Informatik. Ich glaub wir sind uns da einig. Manche Sachen kann man mit Erfahrung voraussagen. Ich bin aber ehrlichgesagt oft überrascht worden, seitdem ich eigentlich bei jedem Java-code den ich schreibe mir Milisekunden Werte hole (da die Messung selbst Zeit kostet, sind solche Werte natürlich nie genau, aber man kann auf jeden Fall immer vergleichen).
 
Ich habe starkes Mißtrauen gegenüber:
- Objekt Verteilung auf verschiedene Rechner um ihrer selbst willen
- Aufteilung von Subsystemen in Komponenten mit "sauberen" Interfaces (low coupling, high cohesion) um ihrer selbst willen.

Performance ist ein Punkt bei der Entwicklung. Es gibt nur ein nicht wegzudiskudierender trade off zwischen Übersichtlichkeit von code und Performance von code.
Das klassische OO-Prinzip ist: Sauberer code ist erst einmal wichtiger. Zumal man in übersichtlichen code auch leichter die realen performance bottlenecks findet. Da ist meiner Ansicht nach sehr viel wahres dran.
Die Praxis (und v.a. die Praxis mit Erfahrung) ist aber immer ein Kompromiss und nicht diese Schlagwörter. Ich baue oft frühzeitig Performance freundliche Infrastruktur (Objekt-Pools, Singletons, etc) bevor es nach der reinen OO-Lehre nötig wäre. Ich beherzige ca. 20 grundlegende oft programmiersprachenspezifische Regeln von performanter Programmierung direkt beim coden.

Trotzdem würde ich niemals (ausser in "onError goto Fehler") goto verwenden, da ich in diesem Leben niemals Assembler programmieren werde. :)
 

Gruß Axel
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 04.10.03 - 06:15:39
Axel, ich kann Dir im wesentlichen nur zustimmen und wie Du richtig bemerkst, war meine Aussage über "Achtung Performance" nur ein Hinweis, den ich anbringen wollte, weil viele Entwickler sich des möglichen Problemes nicht bewusst sind (insbesondere wenns um verteilte und mehrfach gelayerte Sachen geht, wie Du korrekt schreibst).

In deinem ganzen Post, zu dem ich praktisch überall nur "völlig richtig" sagen kann, gibt es einen Problempunkt, und der ist nicht technischer Natur:

Du schreibst:
Meine alte Paranoia kocht hoch, dass Leute.... mich .... als irgendwie neureichen Modegeck ansehen.

Also, damit meinst Du sicher nicht mich, ich habe das nicht getan, werde das auch nie tun.

Du hast früher mal geschrieben:
Goto ist nicht einfach grausam sondern ein Synonym für das Ende der Zivilisation.

Damit tust Du aber genau das mit anderen Leuten, was Dir gegenüber Deine Paranoia aufkochen lässt.

Also bitte, verwende doch für Dich genau dieselben Masstäbe, die Du auch von Deiner Umwelt Dir gegenüber verlangst.


Ich bin sogar mit Dir einverstanden, dass ich seit Jahren keine Gotos mehr verwende (ebenfalls mit Ausnahme des On Error Goto, wo es simpel keine Alternative gibt), und ich gehe sogar so weit, dass ich auch die verkappten Gotos genannt Exits praktisch immer vermeide (und zum Beispiel dafür lieber eine Flag-Variable verwende, welche dann unmerklich weniger performant ist als ein Exit, aber ich weiss das). Deine Bemerkungen über OO und strukturierte Programmierung und zuerst saubere Strukturen und dann Performance, da kann man nur sagen, das sollte man mal GANZ LAUT IN DIE WELT HINAUSSCHREIEN !!

In dem Sinne ganz sicher vielen vielen Dank für diese Auflistung.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 04.10.03 - 19:57:10
OK, überarbeitete Dokumentation siehe 1.Posting.

Recherchen von Rob's Links muss ich noch machen und einbauen.

Teilweise sind noch praxisnähere Beispiele erwünscht, als nur die von mir erwähnten (Zahlen von 1-20).

Also Beispiele für
  kopfgesteuerte
    - Do While...Loop
    - Do Until...Loop
  fußgesteuerte
    - Do...Loop While
    - Do...Loop Until
  sonstige
   - forall
   - do...loop

Thema Performance erwarte ich mir noch einiges von Rob's Links, muss die erstmal durcharbeiten.

Thema "Wie komm ich wieder raus": Hier brauche ich noch Input.
Was ja geht ist ein goto, was allerdings vermieden werden sollte weil es unübersichtlich werden könnte.
Dann wäre da noch ein Exit Sub, aber auch nicht so schön.

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 04.10.03 - 21:06:26
Die Frage nach dem "wie komme ich wieder raus" ist weniger eine Frage des technischen "raus" (also goto oder exit) sondern mehr eine Frage der korrekten Logik:

Extremfall: For i= 1 to 20 step -1

.... verlässt den Loop nach einer Ewigkeit mit einem negativen Overflow ......

Für Forall ist der Ausstieg ja vorgegeben, Ueberlegung überflüssig, er nimmt einach alle Elemente des übergebenen Objektes.

Für do while, do until, while wend, loop until, loop while ist wichtig, sich beim Konzept der Schlaufe die Abbruchbedingung genau zu überlegen: Wird die Schleife überhaupt durchlaufen? Wenn ja, wird die Bedingung zur Abbruch der Schleife irgendwann erreicht? Gibt es Bedingungen, in denen die Schleife (vielleicht wegen Datenfehlehrn) gar nie verlassen werden kann und somit zum endlos-loop wird?

.... und dann bleibt ja noch der "nackte" do .... loop, bei dem der Hinweis fällig ist, dass er mit exit loop verlassen werden muss, da er keine steuernde Bedingung besitzt.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 05.10.03 - 23:14:01
Da habe ich mal die Links von Rob zur Schleifenperformance rasch überflogen und wurde eigentlich darin bestätigt, dass Performance ein hervorragendes Thema für eine Entwickler-Konferenz ist. Es beschäftitgt sporadisch wohl fast jedes Diskussions-Forum und ist trotzdem etwas, das für viele Entwickler, ganz besonders für "Quereinsteiger", recht schwer zu fassen ist. Eine gute Präsentation zum Thema dürfte deshalb ein willkommenes Ereignis darstellen.

Ich werde jedenfalls mal die Sache noch genauer studieren und dann wahrscheinlich entsprechende Vorschläge bei einschlägigen Konferenzen einreichen.

Ich halte Euch auf dem Laufenden, wenn irgendwo etwas in die Richtung "einschlägt".
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 07.10.03 - 00:27:22
Die Verwandlungskünste eines Loop

Da habe ich früher mal versprochen, das noch genauer auszuführen. Hier also mal ein Beispiel, wie man dieselbe Logik in den verschiedenen Typen realisieren kann:

Typisches, praxisnahes Beispiel, klar geeignet für FORALL, soll herhalten: man nimmt die Werte eines Multivalue-Feldes aus einem Dokument und bearbeitet die einzelnen Einträge:

Dim Entries As Variant

Entries = Doc.GetItemValue("MyMultiValueField")
' in Entries stehen jetzt die einzelnen Werte und wir wissen nicht wirklich, wieviele

Forall E in Entries

   print E
'   verarbeite jeden einzelnen Wert irgendwie im Schleifenkörper

End Forall


*******   Dasselbe realisiert mit einem For ... next loop ******

.....
Dim Entries As Variant

Entries = Doc.GetItemValue("MyMultiValueField")
For i=Lbound(Entries) to UBound(Entries)

   print Entries(i)
   .......

Next i


*******   Dasselbe realisiert mit einer While ... Wend Schleife ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
While (i <= Ubound(Entries))

   print Entries(i)
   .......
   i=i+1

Wend


*******   Do while ist dasselbe: ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
Do While (i <= Ubound(Entries))

   print Entries(i)
   .......
   i=i+1

loop


*******  Und auch Do Until unterscheidet sich nur in der Bedingung ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
Do until (i > Ubound(Entries))

   print Entries(i)
   .......
   i=i+1

loop


*******   Do loop while erreicht denselben Effekt: ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
Do

   print Entries(i)
   .......
   i=i+1

loop While (i <= Ubound(Entries))


*******  Und auch Do loop Until unterscheidet sich nur in der Bedingung ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
Do

   print Entries(i)
   .......
   i=i+1

loop until (i > Ubound(Entries))


******

*******  Do .... loop ohne integrierte Bedingung ******

.....
Dim Entries As Variant
Dim i as Integer

Entries = Doc.GetItemValue("MyMultiValueField")

i=Lbound(Entries)
Do

   print Entries(i)
   .......
   i=i+1
   if i > UBound (Entries) Then Exit Loop

loop


******



Alle Beispiele hier sind ohne Optimierung dargestellt (um sie möglichst verständlich zu halten) und ausserdem ist das Beispiel so gestaltet, dass die so wichtigen Ausstiegsbedingungen sich für die einzelnen Schlaufenbeispiele nicht verändern, in der Regel müssen Eintritts. und Austrittsbedingungen auf ihre Gültigkeit hin überprüft werden, wenn man sich für einen anderen Schleifentyp entscheidet.

Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 10.10.03 - 20:53:30
Danke für die Tipps.....

Bin z.Zt. allerdings seeeehr eingespannt beruflich, daher bitte um Geduld, dass das alles in der Doku aufgenommen wird.

Ich kümmere mich aber darum, soll kein totgefahrenes Projekt werden!

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 10.10.03 - 21:06:53
No problem ...

Alle:
Schade, dass da nicht noch mehr Beispiele kommen.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 10.10.03 - 21:09:30
jip, hab mir auch etwas mehr erhofft.

**** AUFRUF - PLEASE POST EXAMPLES *****

 ;)

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 08.11.03 - 14:13:59
Ich habe gesehen, dass die Forall Schleife noch zu beschreiben ist, also:

Die Forall-Schleife führt für jedes Element eines Arrays, einer Liste oder einer Collection einen Befehlsblock aus.

Snytax (aus der Hilfe):
ForAll refVar In container
     [ statements ]
End ForAll

refVar: Die Referenzvariable, die alle Werte des Arrays, der Liste oder der Collection enthält.
Der Name dieser Referenzvariable darf im Scriptcode nicht an anderer Stelle verwendet werden.
container: Das Array, die Liste oder die Collection

Vorteil:
Die Verwendung von Forall stellt einen einfachen und bequemen Weg dar, über alle Elemente eines Arrays (...) zu iterieren. Man muss sich keine Gedanken um untere oder obere Grenze machen und erspart sich eine Laufvariable, wie si bspw. in der For-Schleife verwendet wird.

Die Forall-Schleife kann durch
Exit Forall
vorzeitig beendet werden.

Beispiel:
Aufgabe:Prüfe, ob der User eine bestimmte Rolle besitzt.
Lösung:

dim userroles as Variant
dim checkrole as String
dim treffer as integer
checkrole = "[Admin]"
treffer = false
userroles = Evaluate(|@Userroles|)
forall r in userroles
 if cstr(r) = checkrole then
   treffer = true
   exit forall
 end if
end forall

if treffer then
 msgbox "Der User hat die Rolle " & checkrole
else
 msgbox "Der User hat die Rolle " & checkrole & " nicht"
end if
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 08.11.03 - 16:08:54
Danke Glombi und Jens für den neuen Input!

Das ganze ist jetzt in der aktuellen Beta 5 eingearbeitet.

(Attachment siehe 1.Posting).

Weiterer Input und Anregungen sind willkommen.

Jens schicke ich das jetzt noch als Word, weil er auch noch Ergänzungen machen möchte.

Schön langsam wird's aber!
Endgültige Gliederung der Doku und Index erstelle ich noch, nachdem die Inhalte alle soweit fertig sind.

Grüße,
TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 08.11.03 - 16:38:27
Noch ein Hinweis zu den offenen Punkten:

1) Do...Loop – Schleife (Kap. 7.1)
--> offen wer das macht (bzw. Jens)

2) Performance (Kap. 10)
--> mein Part (analysiere gerade Rob's Links)

3) Links (Kap. 11)
--> Vorschläge willkommen, Rob hat ja auch schon einiges gepostet


TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 08.11.03 - 17:35:18
- measuring script performance
1. http://www.ferdychristant.com/fchristant/homepage.nsf/archive/20030325-0812%20AM?OpenDocument&count=-1

2. http://www.ferdychristant.com/fchristant/homepage.nsf/archive/20030328-0657%20AM?OpenDocument&count=-1

- perfomance testing
http://www.eview.com/eview/viewr5.nsf/e640f630a3361f84852568f600070fd3/61fb8d0e2748d24c85256a55007c9543?OpenDocument

@Rob, leider funktionieren diese Links nicht (mehr), hast Du da vielleicht eine aktuelle Quelle?

Danke,
TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 08.11.03 - 17:53:24
So, nun habe ich auch noch den Part "Performance" und "Links" ergänzt.
(Attachment Beta 6: siehe wie immer 1.Posting).

Nachdem ich bereits 2 Artikel von Rob's Links sinngemäß ins deutsche übersetzt und in die Doku integriert hatte, ist mir gekommen:
"So ein Schmarrn".

Ich behaupte mal, fast jeder, der sich mit Programmierung auseinandersetzt, versteht zumindest in Grundsätzen die geschriebene englische Sprache.
Daher habe ich nun darauf verzichtet, hier Übersetzungsarbeit zu leisten.
Ich habe daher nur die Links reingesetzt, ein Fazit in deutsch drin, und Original-Zusammenfassungen.
Meines Erachtens muss das so reichen. Einzigste Befürchtung ist, dass die Weblinks irgendwann mal tot sind....

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 08.11.03 - 19:26:08
Noch eine Bemerkung zum "Durchwandern" von Collections und GetNthDocument (entrynumber):
- Schreibfehler (GetNthDocument = 1 Wort)
- Sollte aus Performancegründen in der Tat nicht verwendet werden, weil der (neue) Pointer jedes Mal vom Pointer auf den ersten Eintrag aus (!) neu gebildet werden muss. Bei wenigen Elementen stellt dies kein (wahrnehmbares) Problem dar, der Rechenaufwand steigt jedoch exponentiell (!) an und kann nach einigen Tausenden Einträgen schon in den Bereich 1 Sekunde/Pointerbildung gelangen.
- Tritt sowohl in Collections als auch in Views auf.
- Benötigt man eine Nummerierung der gerade bearbeiteten Elemente, sollte parallel zur Instantiierung ein separater Zähler mitgeführt werden.

Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 08.11.03 - 19:31:11
@Bernhard:
Danke für Deinen Input!

Sagst Du mir bitte auch noch den Bezug (Kapitel-Nr.) der Doku?

Merci,
TMC
(verliere sonst die Übersicht)
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 08.11.03 - 19:46:19
Zur Do ... Loop-Schleife:

Eine reine Do ... Loop-Schleife ist die primitiveste Form der Do ... Loop-Konstrukte, die weder kopf- noch fussgesteuert ist, sondern de-facto eine Endlosschleife bedeutet. Ihr Verlassen muß explizit mit
Exit Loop oder
Goto (Sprungmarke ausserhalb des Do ... Loop-Konstrukts)
erzwungen werden.

Die reine Do ... Loop-Schleife eignet sich für Situationen, in denen nicht eine bekannte bzw. ermittelbare Anzahl von Elementen abgearbeitet werden soll, sondern auf bestimmtes Ereignis gewartet wird.

Beispiel:
Const EXIT_INPUT = "EXIT"
Dim szInput as String

Do
   szInput = InputBox$ ("Bitte geben Sie das Suchwort ein. Geben Sie Exit ein, um die Suche abzubrechen.", "Suche formulieren")
   If Ucase (szInput) = EXIT_INPUT then
      Exit Do
   End If

   If szInput <> "" then
      Call SearchResults (szInput)    'Suche durchführen ...
   End If

Loop

HTH,
Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 08.11.03 - 19:49:54
Sorry, Du hast natürlich recht. Hier die Kapitelnummern zu meinen letzten beiden Postings:
- GetNthDocument: 3.1.4 (aber das sollte vielleicht herausgelöst werden und in ein eigenes Kapitel, da es ja auch andere Schleifentypen betrifft)

- Reine Do ... Loop-Schleife: 7.1

Ciao,
Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 08.11.03 - 20:15:01
Bernhard: Das Verlassen einer Schleife mit Goto ist eigentlich nach ANSI-Standard verboten. Der Grund ist einfach: der Compiler erkennt das Verlassen der Scheife nicht und räumt den Stack erst beim Verlassen des nächst-äusseren Blocks auf. Wenn das ein Loop im Loop ist, kann das durchaus mal zu Memory-Problemen (bzw. Stack-Size) führen.
Titel: Re:Welche Schleife wann in Script
Beitrag von: koehlerbv am 08.11.03 - 20:36:31
Vollkommen richtig, Jens. Man *kann* eine Schlaufe mit Goto verlassen, *sollte* aber nicht - genau aus den von Dir genannten Gründen: Der Loop-Stack bleibt erhalten, bis das komplette Objekt "zerstört" wird. Häufig macht das nix - kurz nach der Goto-Sprungmarke ist ja eh' "Ende Gelände" für das Modul, aber irgendwann passiert es dann doch: Goto 'raus aus der Schleife ist einfach eine "Sauerei".

Etwas anderes wäre das Goto innerhalb eine "slynge" (das war dänisch ;-)
Und hier wäre ein eigenes Kapitel "Wie beherrscht man innerhalb einer Schleife Ordnung und Sauberkeit im Schlachthaus?" durchaus interessant.
Goto führt zu unstrukturierter, unübersichtlicher Programmierung. Richtig. Aber innerhalb einer Schleife kann es passieren, daß n (mit n = wird sehr gross) Bedingungen zu beachten sind. Wenn das mit Select Case zu erschlagen ist: Wunderbar. Wenn nicht, dann schachtelt man sich mit Ifs dumm und dämlich. Da kann es m.E. durchaus zur Les- und Pflegbarkeit des Codes beitragen, wenn das (compilerfreundliche !) Goto-Statement eingesetzt wird - ordentlichst dokumentiert (vor der Schleife ! In der Schleife nochmal !). Und in der Regel führt dieses Goto dann zum Fuss der Schleife. Hier mal ein stark vereinfachtes Beispiel mit Verzicht auf x-fach verschachtelte Conditions:

Set viewDocToChange = dbCurrent.GetView ("...")
Set docToChange = viewToChange.GetFirstDocument
While Not (docToChange is Nothing)
   If ... then
      'code
   else
      Goto GetNextDocument

GetNextDocument:
   Set docToChange = viewToChange.GetNextDocument (docToChange)
Wend

Bernhard
Titel: Re:Welche Schleife wann in Script
Beitrag von: Rob Green am 08.11.03 - 21:34:04
hi TMC, Ferdy hat leider mit dem Bloggen aufgehört, kurz nachdem er bei einem Großkotzern in Holland angefangen hatte. Wohl Stress ... hehehe .. auf jeden Fall war sein Blog lange Zeit noch lesbar, nun scheint er ihn versenkt zu haben. Helfen kann ich auch nicht mehr, sorry. Aber merke für die Zukunft, alte Gamerregel, immer richtig: save early, save often ... und mit Notes ist es noch einfacher, Webseiten zu saven, sobald man was Wichtiges hat.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 08.11.03 - 21:40:25
Bernhard: Sehr gute zusätzliche Bemerkungen und - auch wenn ich es praktisch nie verwende - sehe das mit dem Goto innerhalb der Schleife auch so. Goto wird verdammt, dabei ist ein exit loop ja  nix anderes als auch ein Goto hinter das Ende des loops, dürfte also eigentlich auch nicht sein, wenn man gotos ganz verbietet, wird aber auffallend ganz besonders von denjenigen, die goto vehement verbieten, genauso vehement als Allheilmittel gepriesen ----  irgendwie merkwürdig, scheint mir.

Weitere Möglichkeit, das Verwenden von Subroutinen innerhalb einer Schleife, um das Schlachthaus etwas besser in Ordnung zu behalten, auch wenn dadurch natürlich ein Performance-Penalty zu bezahlen ist. Völlig richtig, dass das einen eigenen Abschnitt abgeben könnte.
Titel: Re:Welche Schleife wann in Script
Beitrag von: Semeaphoros am 09.11.03 - 12:27:11
Habe ins Document von TMC jetzt noch den Abschnitt 7.1 aus Bernhards Vorgabe (unter Weglassung des Goto aus der Schlaife raus) ergänzt und auch sonst noch ein paar Feinheiten ins Dokument eingebaut und an TMC zur Redaktion zurückgeschickt. Die Betrachtungen zur übersichtlichen Strukturierung innerhalb des Loops, was Bernhard hier auch angedeutet hat, ist (noch) nicht drin, wir brauchen ja schliesslich Stoff für Version 1.1 ....  ;D

Ich möchte TMC für die geleistete Arbeit von Herzen danken, er hat aus den vielen Fetzen, die hier zusammengetragen wurden, wirlich einen gut lesbaren und gut strukturierten Text erstellt.

Und ich denke tatsächlich darüber nach, ob man das insbesondere anhand der Performance - Betrachtungen zu einem Vortrag verarbeiten könnte. Keep tuned, ich informiere, sobald sich was auf der Vortragsseite tut.
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 09.11.03 - 14:27:24
OK, dank Eurer Hilfe wäre nun dieses Projekt vorerst abgeschlossen  :)

Endversion 1.0 ist im 1.Posting downloadbar.

Ich danke allen Autoren und Helfern!

Anregungen, Verbesserungsvorschläge und neuer Input sind natürlich gerne gesehen.

Viele Grüße,
TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 10.11.03 - 20:17:19
OK nun gibts noch Version 1.01 im ersten Posting.
Hat sich aber fast nix geändert.
Habe nur die Kontatdaten von Don Pasquale hinzugefügt und Änderungshistorie eingefügt.

TMC
Titel: Re:Welche Schleife wann in Script
Beitrag von: Glombi am 12.11.03 - 10:56:04
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
Titel: Re:Welche Schleife wann in Script
Beitrag von: Rob Green am 12.11.03 - 11:16:53
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
Titel: Re:Welche Schleife wann in Script
Beitrag von: TMC am 26.01.04 - 20:34:05
Die Dokumentation "Schleifen in Lotus Script" befindet sich ab sofort unter Best Practices als PDF zum Download:
Best Practices - Schleifen in Lotus Script (http://www.atnotes.de/index.php?board=26;action=display;threadid=13504)

Es können aber gerne weiter hier im Thread weitere Anregungen, Verbesserungsvorschläge etc. gepostet werden.

Matthias