Lotus Notes / Domino Sonstiges > Projekt Bereich

Welche Schleife wann in Script

<< < (14/16) > >>

TMC:
@Bernhard:
Danke für Deinen Input!

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

Merci,
TMC
(verliere sonst die Übersicht)

koehlerbv:
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

koehlerbv:
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

Semeaphoros:
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.

koehlerbv:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln