Aktualisierung von Variable

Fragen, Anregungen zur PC-Wetterstations-Software

Moderatoren: Werner, Tex, weneu

Antworten
adris

Aktualisierung von Variable

Beitrag von adris »

Hi,

die Variablen für die kalten Tage, heißen Tagen usw... werden ja automatisch aktualisiert, wenn nachts nach 0 Uhr die Internetdateien aktualisiert werden.

Allerdings habe ich das Problem, daß bei mir %ws_uldays_y%
(mit benutzerdefiniertem Grenzwert <= xxx) nicht automatisch aktualisiert wird, sondern nur, wenn man selbst manuell auf "Internet-Daten aktualisieren" klickt.

Mache ich da irgendwas falsch oder ist das so?

Viele Grüße
Adris
Benutzeravatar
weneu
Site Admin
Beiträge: 11572
Registriert: 22 Feb 2002 01:00
Wohnort: Donauwörth
Danksagung erhalten: 18 mal
Kontaktdaten:

Beitrag von weneu »

Hallo Adris,
konnte deine Angaben noch nicht nachprüfen, da bei mir die Variable eigentlich immer aktuell ist.
Könnte es sein, dass du den Haken bei "Internet - Einstellungen - Allgemeines" und dort im Feld "automatsch Internetdateien aktualisieren" nicht gesetzt hast? (bzw. bei "Steuerung - Einstellungen - Transferoptionen")
adris

Beitrag von adris »

Hi Werner,

bei Internet-Einstellungen ist das Häkchen gesetzt bei "Internetdateien autom. aktualisieren".
Deshalb wird auch immer kurz nach 0 Uhr alles aktualisiert, nur der benutzerdefinerte nicht.

Auch wenn ich auf Wetter-Statistikdaten gehe, ist bei warmen, heißen Tagen... alles aktuell, aber bei dem bentzerdef. Kältewert leider nicht.

gruß
Adris
adris

Beitrag von adris »

Hallo Werner,

es funktioniert doch alles richtig. der Fehler lag bei mir.
ich hatte bei den tropischen Nächten 1 mehr erhalten als ich manuell abgezählt hatte. deshalb dachte ich, daß die Variable nicht aktualisiert wird über Nacht. Ich hatte nicht beachtet, daß bei den Statistiken der aktuelle Tag nicht dazuzählt, sondern es nur bis zum Vortag geht.

Und deshalb gibt es einen Fehler mit den tropischen Nächten des aktuellen Jahres:

richtig muss es heissen:

%ws_setmem[1]=%ws_calc[-]=%ws_dayyear%~%ws_uldays_y%~0%%
%ws_setmem[2]=%ws_calc[-]=%ws_getmem[1]%~1~0%%


d.h. man muss vom Ergebnis 1 Tag abziehen.

bei de trop. Nächten des Vorjahres bleibt alles beim alten.

gruß
Adris
Benutzeravatar
weneu
Site Admin
Beiträge: 11572
Registriert: 22 Feb 2002 01:00
Wohnort: Donauwörth
Danksagung erhalten: 18 mal
Kontaktdaten:

Beitrag von weneu »

Hallo Adris,
wollte gerade antworten, dass alles richtig aktualisiert wird (habe extra mal über Nacht gewartet, damit ich nichts von Hand auslösen musste), da sehe ich dein Posting.
Da sieht man wieder mal, dass der Teufel im Detail steckt. Was mir auch noch nicht ganz gefällt (es soll ja bei uns in Deutschland immer alles perfekt sein :) ), dass das Schaltjahr (366 anstatt 365) nicht berücksichtigt wird. Könnte man zwar mit Sicherheit auch lösen, aber ob der Aufwand dafür steht?
adris

Beitrag von adris »

Hallo Werner,

das Problem mit dem Schaltjahr kann man mit der mathematischen Funktion "modulo" lösen.
d.h.:

Das aktuelle Jahr minus 1 ergibt Vorjahr.
Nun kann man den Wert des Vorjahres durch 4 dividieren.
Ergibt der Divisions-Rest 0, dann hat man ein Schaltjahr, sonst kein Schaltjahr.

Bsp.: 2004 mod 4 = 0
2003 mod 4 = 3

Dank Werners neuen Variablen läßt sich das algorithmisch folgendermaßen lösen:

%ws_setmem[21]=%ws_calc[-]=%ws_year%~1~0%%
%ws_setmem[17]=%ws_calc[/]=%ws_getmem[21]%~4~0%%
%ws_setmem[18]=%ws_calc
[*]=%ws_getmem[17]%~4~0%%
%ws_setmem[19]=%ws_calc[-]=%ws_getmem[21]%~ws_getmem[18]~0%%

%ws_setmem[16]=%ws_calc[-]=365~%ws_ly_uldays_y%~0%%
%ws_setmem[20]=%ws_calc[-]=366~%ws_ly_uldays_y%~0%%

%ws_compare[3]=%ws_getmem[19]~0~%ws_getmem[20]%~%ws_getmem[16]%[/b]

Leider bin ich gerade nicht zu Hause an meinem PC, kann ich also im Moment nicht testen, aber ich habe es gerade im Kopf durch gespielt,
sollte alles funktionieren, wenn ich keine Tip-Fehler habe und kein %-Zeichen vergessen habe.

Viele Grüße
Adris
Benutzeravatar
weneu
Site Admin
Beiträge: 11572
Registriert: 22 Feb 2002 01:00
Wohnort: Donauwörth
Danksagung erhalten: 18 mal
Kontaktdaten:

Beitrag von weneu »

Hallo Adris,
es sollte bis auf eine Kleinigkeit klappen: ich vermute, du hast nicht berücksichtigt, das WSWIN rundet.
Man sollte also nicht
%ws_setmem[17]=%ws_calc[/]=%ws_getmem[21]%~4~0%%
schreiben, sondern
%ws_setmem[17]=%ws_calc[/]=%ws_getmem[21]%~4~1%%
Prüfe es mal mit 2004 und 2005 durch, denn dann erhältst du durch den Rundungseffekt (wenn man als testjahre mal 2004 und 2005 nimmt) bei 2004 nicht den Wert 500, sondern 501 und genau das passt dann nicht, denn 2005 ergibt ja auch 501.
Wenn dagegen auf eine Stelle ausgegeben wird, erhältst du 500,8 und 501 und die Rechnung passt.
Übrigens: So ähnlich habe ich mir die Lösung vorgestellt, daher auch meine Befürchtung mit dem "Aufwand". Ich habe das Problem mal, als es WSWIN noch nicht gab (kaum vorstellbar :( und auch noch keine höheren Programmiersprachen) in BASIC so gelöst.
adris

Beitrag von adris »

Hallo Werner,

ja, du hast recht. ich dachte, daß das Teilergebnis ohne Rundung ausgegeben wird.

dann ist alles klar.

Viele Grüße!
Adris
Antworten