Autor Thema: Welche Schleife wann in Script  (Gelesen 54942 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Welche Schleife wann in Script
« 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

** 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
« Letzte Änderung: 26.01.04 - 20:30:38 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Welche Schleife wann in Script
« Antwort #1 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>
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #2 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)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Welche Schleife wann in Script
« Antwort #3 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #4 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 .....
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Welche Schleife wann in Script
« Antwort #5 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Welche Schleife wann in Script
« Antwort #6 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

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #7 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 :-)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Welche Schleife wann in Script
« Antwort #8 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.
« Letzte Änderung: 30.09.03 - 21:16:28 von Glombi »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #9 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 :-)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Welche Schleife wann in Script
« Antwort #10 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 ...)

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #11 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
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Welche Schleife wann in Script
« Antwort #12 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

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Welche Schleife wann in Script
« Antwort #13 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
« Letzte Änderung: 30.09.03 - 22:44:00 von koehlerbv »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Welche Schleife wann in Script
« Antwort #14 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
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #15 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.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Welche Schleife wann in Script
« Antwort #16 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

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Welche Schleife wann in Script
« Antwort #17 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)

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Welche Schleife wann in Script
« Antwort #18 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 .....
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Glombi

  • Gast
Re:Welche Schleife wann in Script
« Antwort #19 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)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz