Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bificypdog am 26.04.05 - 16:42:32

Titel: UpperCase o.ä. in Script
Beitrag von: bificypdog am 26.04.05 - 16:42:32
Moin moin

kurz vorweg: Ich nutze ein Script, dass ich hin und wieder den Kollegen per Mail (Button) zuschicke, mit dem die Kacheln abhängig von der Geschäftsstelle installiert werden.
Alle Geschäftsstellen habe einen Server und dort liegt normalerweise auch der "MailServer". Das heisst: Ich hole mir aus die Umgebungsvariabel "MailServer" und füge per "Call UiWs.addDatabase...." die Kachel hinzu.

Das ist normalerweise kein Problem, hätten wir nicht in der Hauptstelle zwei Notes-Server.
Auf SERVERA laufen alle Anwendungen und SERVERB stellt nur die Postkörbe zur Verfügung.

So dachte ich mir (auch wenn es nicht elegant ist), frage ich einfach den ermittelten "MailServer" im Script fest ab und prüfe, ob nicht jemand versehentlich den "SERVERB" angegeben hat. Wenn ja, dann wird der Wert (unschön) im Script mit "SERVERA" ersetzt.

Code
	sMailServer = oSession.GetEnvironmentString("MailServer",True)
	If cMailServer.common = "SERVERB" Then
		cMailServerNew = "SERVERA"
	Else
		cMailServerNew = cMailServer.common 
	End If

Der Eintrag "MailServer" in der names.nsf ist hin und wieder klein oder GROSS geschrieben. Das ist mein Problem. Die simple If-Abfrage prüft nur, ob der Wert (im obigen Beispiel) GROSS geschrieben wurde. Ich finde es dabei ziemlich unelegant, wenn ich jetzt alle möglichen Schreibweisen überprüfen muss.

In der Formelsprache würde ich einfach mit einem Uppercase den String vergleichen.

Ich konstruiere mal ;-)

If @UPPERCASE(cMailServer.common) = "SERVERB" Then

Schicke, gelle? ;-)

Wie geht das aber wirklich in Lotus Script?

Titel: Re: UpperCase o.ä. in Script
Beitrag von: m3 am 26.04.05 - 16:45:51
Also in Notes 6 gibts StrConv ( expr , 1 ) für sowas.

Titel: Re: UpperCase o.ä. in Script
Beitrag von: koehlerbv am 26.04.05 - 16:48:12
UCase heisst das in LS, das Gegenteil ist Lcase.

Bernhard
Titel: Re: UpperCase o.ä. in Script
Beitrag von: bificypdog am 26.04.05 - 16:52:03
*andenkopfpack*

Grr.
Habe den Text gerade zu Ende geschrieben und kurz danach mal folgendes ausprobiert.

If Ucase$(cMailServer.common) = "SERVERB" Then

Und es klappt. Die Schreibarbeit hätte ich mir sparen können.

Dennoch vielen Dank für eure Hilfe.
Titel: Re: UpperCase o.ä. in Script
Beitrag von: Semeaphoros am 26.04.05 - 17:02:42
Hm .... interessant, dass niemand strCompare erwähnt, welches doch fürs Vergleichen von Strings vorgesehen ist ....
Titel: Re: UpperCase o.ä. in Script
Beitrag von: koehlerbv am 26.04.05 - 17:08:56
Vielleicht, weil es sich einfach nicht so intuitiv lesen / schreiben lässt - und machen tut es auch nix anderes ...

Bernhard
Titel: Re: UpperCase o.ä. in Script
Beitrag von: Semeaphoros am 26.04.05 - 17:22:15
Dürfte deutlich performanter sein als die anderen Varianten .... klar, im gegebenen Fall spielt das keine Rolle.
Titel: Re: UpperCase o.ä. in Script
Beitrag von: koehlerbv am 26.04.05 - 18:39:03
Performanter habe ich auch erwartet, aber ... Zunächst musste ich den Schleifenendwert auf 500.000 setzen, um überhaupt vernünftig messen zu können. Damit nicht immer die gleichen Werte vorgesetzt werden (der Compiler ist ja auch nicht doof  ;D), vergleiche ich NotesSession.Username mit einer Konstanten.
Ergebnis für beide Verfahren: 14 Sekunden.

Hier spielt aber offensichtlich die Abfrage von Username vorrangig zu, denn:
Belege ich eine Variable mit einer Konstanten und vergleiche dann in der Schleife die variable mit einer Konstanten, erhält man einen deutlichen Unterschied:
StrCompare: 9 Sekunden
Ucase: 23 Sekunden
(was zu erwarten war).

Einen praktischen Nutzen hat das aber bestimmt nicht, da die anderen Vorgänge innerhalb einer Schleife deutlich mehr Einfluss auf die Laufzeit haben als dieser Vergleich. Interessant war der Test aber schon  :)

Bernhard
Titel: Re: UpperCase o.ä. in Script
Beitrag von: Semeaphoros am 26.04.05 - 19:10:41
Danke fürs Testen und die Bestätigung der Vermutungen ....

Für mich interessanter am strCompare ist eigentlich schon die Möglichkeit, die Option Case gleich mitgeben zu können, damit hat man dann wirklich grosse Flexibilität, was das Vergleichen anbelangt.