Autor Thema: [LS-Tipp] Select Case  (Gelesen 7626 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
[LS-Tipp] Select Case
« am: 27.02.05 - 19:38:25 »
Select Case ist ein sehr mächtiges Werkzeug, aber leider ist es in der Designerhelp nicht komplett dokumentiert.

Select Case nimmt nicht nur einzelne Bedingungen, sondern auch Listen oder etwa Vergleichsoperatoren.

Beispiele für Zahlen
  • Case 10:           Msgbox "10"
  • Case 1,3,7:       Msgbox "1, 3 oder 7"
  • Case 12 to 30:  Msgbox "Wert zwischen 12 und 30"
  • Case Is >= 40:  Msgbox "Wert ist größer/gleich 40"


Und es geht noch weiter: auch Strings können abgearbeitet werden.

Beispiele für Strings
  • Case "a" to "z":      Msgbox "a, b, c, .... oder z wurde ausgewählt"
  • Case "a:" to "z:"     Msgbox "a:, b:, c:, .... oder z: wurde ausgewählt"
Beim 2. Beispiel ist bemerkenswert, dass ein Doppelpunkt am Buchstaben hängt, und trotzdem funktioniert das scheinbar.


Vorteil des ganzen:
Man kann sich viel Code (z.B. if-Verschachtelungen etc. ersparen).


Ich vermute, es gibt noch mehr Möglichkeiten. Bitte immer her damit  ;)
Matthias

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


Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re: [LS-Tipp] Select Case
« Antwort #1 am: 27.02.05 - 19:48:34 »
Hallo Matthias,

das klingt ja hoch interessant! Und wo ist hier der Haken? Irgendwo muss ja was sein, sonst wäre dies doch bestimmt dokumentiert...!?

Gruß Armin

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: [LS-Tipp] Select Case
« Antwort #2 am: 27.02.05 - 19:54:22 »
Armin, jo, den Haken hab ich auch schon gesucht  ;D

Ich vermute mal Performance, aber konnte subjektiv nix negatives feststellen.

Aber durchaus etwas seltsam, da normalerweise Lotus Notes sehr gut dokumentiert ist, und es nur wenige Ausnahmen gibt, wo das nicht so ist. Auch die ND6-Help ist nicht wirklich mitteilsamer bei Select Case.

Hmm, wäre schon fast was für einen Best Practices - Artikel, wenn wir keine Haken finden  :D
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: [LS-Tipp] Select Case
« Antwort #3 am: 27.02.05 - 19:57:41 »
Ich kann noch nicht entdecken, was davon undokumentiert ist (ausser dem Doppelpunkt - von solchen Stunts würde ich die Finger lassen).

Und Matthias hat vollkommen wahr: Select Case ist ein mächtiges Werkzeug. Genauso wie Listen  ;D Die haben mir gerade gestern wieder das Leben mächtig erleichtert  ;)

Bernhard

PS: Wegen Haken - ist nicht. Wegen Performance - der Code wird nativ umgesetzt und ausgeführt, ist ergo schneller als andere Konstrukte, die zum Beispiel sowas wie "Case 15..50" ausdrücken.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: [LS-Tipp] Select Case
« Antwort #4 am: 27.02.05 - 20:06:45 »
Ich kann noch nicht entdecken, was davon undokumentiert ist (ausser dem Doppelpunkt - von solchen Stunts würde ich die Finger lassen).

Hmm, ja eben die Sache mit dem Doppelpunkt meinte ich, aber generell Strings a....z. Jedenfalls gibt es kein Beispiel in der Help hierzu und auch sonst wird es IMHO nicht explizit erwähnt. Select Case weiß aber, dass nach A ein B kommt, usw.

Ich nehme Select Case übrigens auch her, um If-Abfragen zu vermeiden.

Selbst bei:
Code
If Bedingung = 1 Then
   'Aktion
Elseif Bedingung = 2 Then
   'Aktion 2
End If
nehme ich oft lieber select case, da IMHO übersichtlicher. Und ich baue immer einen "Case Else" ein. Auch wenn dort nix passiert, aber dann kommentiere ich das im Case Else.
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: [LS-Tipp] Select Case
« Antwort #5 am: 27.02.05 - 20:20:31 »
Wer den Advanced Lotusscript Test schreiben will, merkt sich mit Vorteil diese Möglichkeiten, die kommen dort als Fragen vor. Und ich hab das auch schon in Lotusphere-Sessions abgehandelt gesehen, da ist man also durchaus bei den Leuten mit diesen Konstrukten.

Wieso soll "a:" to "z:" exotisch sein? Das ist doch äquivalent zu

   "a:" <= x <= "z:"

und wird damit intern genauso abgearbeitet, wie wenn da a to z oder auch Aachen to Zuerich stehen würde, das ist nicht wirklich was besonderes.
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: [LS-Tipp] Select Case
« Antwort #6 am: 27.02.05 - 20:36:37 »
Ah, danke für die Bestätigung, Jens.

Wobei ich es seltsam finde, dass gerade sowas in einem Test abgefragt wird. Aber das ist ein anderes Thema ("Wie prüfe ich, ob jemand LS kann via Test").
Ich persönlich bin auch gegen alle MultipleChoice - Tests. Einmal gelernt, für immer vergessen.
Vorteil: es kann schwarz/weiss ausgewertet werden und es gibt immer ein klares Ergebnis. Und die Testauswertung ist schnell.
Erinnert mich noch an meine Schulzeit: Mathe-Schulaufgaben gab's meist 1-2 Tage später zurück, Deutsch-Schulaufgaben oft erst nach 1 Woche oder später. Wenn der Deutsch-Lehrer schnell war, wussten wir meist, er hat sich keine Mühe gegeben. Und bei Deutsch-Schulaufgaben (Aufsätze, Erörterungen, etc.) ist auch viel subjektiver Einfluss vom Lehrer dabei. Da können schon mal 2-3 Schulnoten auseinanderliegen zw. 2 Lehrern.
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: [LS-Tipp] Select Case
« Antwort #7 am: 27.02.05 - 20:44:22 »
Noch ein Nachsatz zu "a:" to "z:": Da braucht man nur die ASCII-Chars zu betrachten (und muss dies auch), um zu wissen, wann dies funktioniert und wann nicht. Insofern ist dies also kein "Stunt", wenn man weiss, was man tut.

Eine gute Sonntagnacht wünscht

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: [LS-Tipp] Select Case
« Antwort #8 am: 27.02.05 - 20:50:02 »
Täusche Dich nicht bei der Beurteilung von Schulnoten, alles, was ich bisher zu dem Thema gesehen hab, zeigt, dass die Spanne bei Matheaufgaben ähnlich breit - also bei gleichen Resultaten eine Abweichung von 2 bis 3 Noten zwischen zwei Leherern - ist wie bei Aufsätzen oder so. Auch da spielt viel subjektives hinein, ein ziemlich deutliches Beispiel: Die Mathe-Aufgabe wurde mit dem richtigen Lösungsweg gelöst, am Schluss macht der Schüler einen Flüchtigkeitsfehler und hat ein falsches Resultat. Wie ist das zu bewerten? Falsch, weil das Resultat nicht stimmt? Halbrichtig, weil der Lösungsweg stimmt aber das Resultat falsch? Richtig, weil der Lösungsweg stimmt, der kleine Fehler im Resultat ist nicht wirklich wichtig? Da differieren dann die Meinung der Leute gewaltig und selbst bei ein und demselben Lehrer gibts da auch mal unterschiedliche Resultate, je nach sym- oder anti-pathie ......

Richtig, diese MC-Tests sind nichts besonders schönes, sie sind sehr praktisch, weil einfach und schnell ausgewertet. Lotus hat vor vielen Jahren versucht, Praxis-Tests anstele der MC-Testmethoden zu entwickeln und anzubieten. Der Erfolg? Ernüchternd, um nicht bösere Worte zu gebrauchen. Sowohl die Testzenter wie auch die Prülinge haben diese Art von Tests nicht wirklich akzeptiert und so war Lotus-Education gezwungen, diese wieder einzustampfen. Leider.

Nachtrag zum Advanced-LS-Test: Tatsächlich sind in diesem Test sehr viele, sehr unnötige Fragen (nach der Syntax, die heute mit dem automatischen Ergänzen nicht mehr so wichtig ist zum Bleistift) enthalten, der Test ist aber auch einer der ältesten, die noch existieren, den gabs schon zu R4-Zeiten. Die Leute von der Education-Abteilung wissen das.
« Letzte Änderung: 27.02.05 - 21:02:15 von Semeaphoros »
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 DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: [LS-Tipp] Select Case
« Antwort #9 am: 07.07.05 - 10:22:48 »
Habe heute eine böse Überraschung mit Select-Case erlebt.

Wollte eine DB mit ca. 117000 Docs durchforsten.

Ausgangssituation:
Es gibt n Doc-Typen mit m Feldern und die Feldnamen sind immer nur in einem Doc vorhanden. In bestimmten Feldern in beliebigen Doc´s muss an beliebiger Stelle ein Wert geändert werden ( versteht man das noch??  O0 )
Also jedes Doc nehmen und reinschauen.....

Ergebnis:
Nach ca. 1100 Docs ist das ganze mit 'Out of Stack Space' abgebrochen.

Habe meinen Code irgenwann bis auf das Select-Statement ausgedünnt und es funktionierte immer noch nicht.
Habe das ganze auf den Klassiker IF-THEN-ELSE umgestellt und jetzt rennt das ganze.
Wo das Problem jetzt tatsächlich herkam konnte ich leider nicht ermitteln.

Gruss

André
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: [LS-Tipp] Select Case
« Antwort #10 am: 07.07.05 - 11:01:12 »
Das kann aber nicht am SELECT CASE liegen, dass sieht mehr eher nach einer versehentlichen Rekursion aus. Ich hatte gerade vor zwei Wochen einen sehr ähnlichen Fall, selbst die Dokumentzahl ist fast identisch. Und diese Routine läuft jede Nacht und völlig ohne Probleme.

Hast Du den fraglichen Code noch ? Und hat Dir ein ErrorHandler mitgeteilt, an welcher Stelle dem Stack die Luft weggeblieben ist ?

Bernhard

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: [LS-Tipp] Select Case
« Antwort #11 am: 07.07.05 - 14:15:57 »
Hm, leider nicht mehr.
Müsste ich bei Gelegenheit mal Rekonstruieren.

Aber der Fehler zeigte direkt auf eine Case Anweisung.

André

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: [LS-Tipp] Select Case
« Antwort #12 am: 07.07.05 - 19:02:03 »
Da verwendet er den Stack für Zwischenresultate. Entweder ist das eine Recursion auf die eigene Routine, oder dann werden irgendwelche Objekte nicht dereferenziert.
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 DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: [LS-Tipp] Select Case
« Antwort #13 am: 07.07.05 - 19:28:36 »
Das habe ich auch vermutet. Bei Gelegenheit werde ich mal einen Agenten mit leeren Case-Anweisen aufsetzen und schauen was passiert.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re: [LS-Tipp] Select Case
« Antwort #14 am: 29.07.05 - 01:32:21 »
Ohne das jetzt testen zu wollen tippe ich, daß es bei Strings gleicher Länge funktioniert während Stringvergleiche ungleicher Länge über kurz oder lang zum Stack-Überlauf führen.

(Die Max-Länge der Strings ist auch noch eine Sache, auf die ich mein Hemd nicht verwetten würde)
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz