Seite 1 von 1

If-Then bzw. Case-Else Abfrage direkt in WsWIN

Verfasst: 31 Okt 2007 19:56
von joergeli
Hallo zusammen,

durch den Thread
http://www.pc-wetterstation.de/forum/vi ... php?t=5344

ist bei mir (mal wieder :wink:) die Frage aufgetaucht, ob man eine
Abfrage mit mehr als 2 Alternativen direkt mit den Variablen
von WsWIN durchführen kann.

Holli hatte in dem o.a. Thread die compare-Funktion angesprochen.
Hiermit kann ich aber nur einen einfachen ja/nein-Vergleich durchführen.

Wenn ich aber mehrere Zustände vergleichen will
(z.B. hat es mehr als 10mm, mehr als 20mm, mehr als 30mm, etc. geregnet und dann nur die Ausgabe "Es hat mehr als 20mm geregnet" haben will)
komme ich mit der compare-Funktion allein nicht weiter.
Habe mal ein wenig rumgespielt und die Ausgaben der compare-Abfragen
dann in eine Speichervariable (%ws_setmem[x]=zzzzz%) geschrieben
und diese dann an die nachfolgende compare-Abfrage übergeben,
Allerdings kommt dann das Problem auf, das man die gleiche setmem-Funktion - ich glaube - nur 1 mal in einer Zeile verwenden darf.
Außerdem wurde das Ganze irgendwann so unübersichtlich, daß ich aufgegeben habe. :oops:

Deshalb meine Frage:
Gibt es ein Äquivalent zu If-Then bzw. Case-Else direkt in WsWIN,
bzw. hat jemand einen Kniff gefunden, wie man es realisieren könnte ?

Gruß
Jörg

Verfasst: 31 Okt 2007 21:10
von Holli

Code: Alles auswählen

%ws_setmem[1]=Es ist trocken%
%ws_setmem[2]=%ws_compare[1]=%curminmaxhour[4,1,34]%~0,1~Es hat vor %ws_desert_duration% zuletzt geregnet~%ws_getmem[1]%%%
%ws_setmem[3]=%ws_compare[2]=%curval[34]%~0,1~Es regnet im Moment~%ws_getmem[2]%%%
%ws_setmem[4]=%ws_compare[2]=%curval[34]%~0,3~Es regnet im Moment kräftig~%ws_getmem[3]%%%
%ws_setmem[5]=%ws_compare[2]=%curval[34]%~0,7~Es gießt wie aus Eimern. Die Hunde wollen nicht gassi gehen~%ws_getmem[4]%%%
%ws_setmem[6]=%ws_compare[2]=%curval[34]%~1~Es schüttet in Strömen. Die Frösche stellen sich unter~%ws_getmem[5]%%%
%ws_setmem[7]=%ws_compare[2]=%curval[34]%~1,5~Es prasselt gerade unglaublich. Die Fische rufen den Seenotrettungsdienst an~%ws_getmem[6]%%%
%ws_setmem[8]=%ws_compare[2]=%curval[34]%~2~Hier schwimmt gleich alles weg. Die Enten wollen in die Rettungsboote~%ws_getmem[7]%%%
%ws_getmem[8]%
finde ich nicht wirklich unübersichtlich.

Verfasst: 31 Okt 2007 23:03
von stuggi
Hallo,
Ich habe ich gebastelt:

Code: Alles auswählen

%ws_setmem[9]=%ws_calc1[/]=%ws_calc[+]=%curval[2]%~%curval[43]%~1%~2~1%% %ws_delline%
%ws_setmem[10]=%ws_compare[4]=%rain1h%~0.2~z. Zt. Tau / Nieselregen~z. Zt. Schneeregen%% %ws_delline%
%ws_setmem[5]=%ws_compare[4]=%rain1h%~0.2~z. Zt. Reif / Schneegriesel~z. Zt. Schneefall%% %ws_delline%
%ws_setmem[11]=%ws_compare[4]=%ws_getmem[9]%~0.7~%ws_getmem[5]%~%ws_getmem[10]%%% %ws_delline%
%ws_setmem[4]=%ws_compare[4]=%rain1h%~0.2~z. Zt. Tau / Nieselregen~Regen%% %ws_delline%
%ws_setmem[3]=%ws_compare[4]=%ws_getmem[9]%~1.3~%ws_getmem[11]%~%ws_getmem[4]%%% %ws_delline%
%ws_setmem[6]=%ws_compare[4]=%rain1h%~0.2~~z. Zt. leichter %% %ws_delline%
%ws_setmem[7]=%ws_compare[2]=%curval[34]%~0.2~z. Zt. mäßiger ~%ws_getmem[6]%%% %ws_delline%
%ws_setmem[8]=%ws_compare[2]=%curval[34]%~0,4~z. Zt. starker ~%ws_getmem[7]%%% %ws_delline%
%ws_setmem[18]=%ws_compare[1]=%ws_calc1[2]=%curval[25]%~%curval[26]%~0%~14~%ws_getmem[8]%%ws_getmem[3]%~ohne Regen seit %ws_desert_durations% ++%% %ws_delline%
%ws_getmem[18]% %ws_compare[2]=%curminmaxhour[4,1,34]%~0,2~ mit %curminmaxhour[4,1,34]% mm letzte h ++~ %
Wenn die diese zeile nimmst:

Code: Alles auswählen

%ws_setmem[18]=%ws_compare[1]=%ws_calc1[2]=%curval[25]%~%curval[26]%~0%~14~%ws_getmem[8]%%ws_getmem[3]%~ohne Regen seit %ws_desert_durations% ++%% %ws_delline%
siehst du ja was geht.
warum nimmst du nicht für jeden 20mm eine eigene compare-Funktion?


@Holli
wie geht das?

Code: Alles auswählen

Es ist jetzt 2,2K wärmer als gestern um diese Zeit. 
Es ist heute 3,5K kälter als im langjährigen Monatsmittel. 
ein Tipp wär nett.

Grüßle Chris

Verfasst: 01 Nov 2007 15:27
von Holli
stuggi hat geschrieben: @Holli
wie geht das?

Code: Alles auswählen

Es ist jetzt 2,2K wärmer als gestern um diese Zeit. 
Es ist heute 3,5K kälter als im langjährigen Monatsmittel. 
ein Tipp wär nett.

Code: Alles auswählen

				<tr>
					<td>Es ist heute
					%ws_setmem&#91;1&#93;=%ws_calc&#91;-&#93;=%ws_normaltemp%~%avgval&#91;2&#93;%~1%%
					%ws_setmem&#91;2&#93;=%ws_calc&#91;*&#93;=%ws_getmem&#91;1&#93;%~-1,0~1%%
					%ws_compare&#91;2&#93;=%ws_getmem&#91;1&#93;%~0,0~%ws_getmem&#91;1&#93;%~%ws_getmem&#91;2&#93;%% Grad
					%ws_compare&#91;2&#93;=%ws_getmem&#91;1&#93;%~0,0~k&auml;lter~w&auml;rmer% als im langj&auml;hrigen Monatsmittel und
					%ws_setmem&#91;3&#93;=%ws_calc&#91;-&#93;=%avgvalpast&#91;2~00~00~-001&#93;%~%avgval&#91;2&#93;%~1%%
					%ws_setmem&#91;4&#93;=%ws_calc&#91;*&#93;=%ws_getmem&#91;3&#93;%~-1,0~1%%
					%ws_compare&#91;2&#93;=%ws_getmem&#91;3&#93;%~0,0~%ws_getmem&#91;3&#93;%~%ws_getmem&#91;4&#93;%% Grad
					%ws_compare&#91;2&#93;=%ws_getmem&#91;3&#93;%~0,0~k&auml;lter~w&auml;rmer% als heute vor einem Jahr.</td>
				</tr>

Verfasst: 01 Nov 2007 21:25
von joergeli
@Holli

Tja, wenn man - wie Du - den richtigen Ansatz nimmt, funktioniert's auch ;-)
Ich habe immer falsch angefangen und mich dann in den ws_setmems und ws_getmems verstrickt :wink:

Danke und Gruß
Jörg