Seite 1 von 1

Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 12:30
von SpiRu
ZEIT sollte normalerweise das gleiche Ergebnis liefern wie DATUM+UHRZEIT!
Nicht so bei Homeputer:

Code: Alles auswählen

Variablen: t0, t1: [Zeit], tu: [Uhr], s: [Zeichen]

t0:= ZEIT
t1:= DATUM+UHRZEIT
tu:= t0-t1
s := tu
sprachausgabe(s)
Ergibt eine Differenz von meist 3..4 Sekunden, manchmal mehr, selten 0 Sekunden. Das ist nicht gerade das, was ein "normaler" Mensch erwartet! :roll:

Das ist auch des Rätsels Lösung mit der rückwärts laufenden Zeit, das ich an anderer Stelle beschrieben habe.
Befremdliches Systemverhalten :roll: hat geschrieben: :roll: Uninitialisierte oder mit 0:0:0 vemeintlich initialisierte Zeit-Variable werden vom Laufzeitsystem unerwarteter- und undokumentierterweise mit dem Rückgabewert der Funktion ZEIT zum Zeitpunkt des Systemstarts initialisiert! :roll:
Ich hatte seinerzeit (DATUM+ZEIT) verwendet statt ZEIT, so dass sich im Prinzip obige Aufrufreihenfolge ergab. Da (DATUM+UHRZEIT) der ZEIT meist mehrere Sekunden hinterher hinkt, enthielt t0 aus Sicht des aktiven Objekts quasi einen Wert aus der Zukunft. :roll:

Re: Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 12:47
von PeterM
UHRZEIT:

Diese Funktion gibt die aktuelle Uhrzeit im Format HH:MM:SS zurück. Die Uhrzeit wird im 5-Sekunden-Takt aktualisiert, die Sekunden der Uhrzeit sind also immer durch 5 teilbar.

Bevor man hier großkotzige Sprüche abläßt, sollte man evtl. mal die vorhandenen Hilfetexte durchlesen.
Damit klinke ich mich aber sofort wieder aus...

Gruss,
PeterM

Re: Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 13:14
von tsa
Spinnender Russe: schau mal im Wikipedia unter MERKBEFREIUNG.
Teddy hatte seinerzeit schon mal eine ausgefüllt, ich hab nur noch Deinen Namen eingetragen...

Code: Alles auswählen

    Die nachstehend eindeutig identifizierte Lebensform

    Name                 : SpiRu______________
    Vorname              : ___________________
    Geburtsdatum         : ___________________
    Geburtsort           : ___________________
    Personalausweisnummer: ___________________

    ist hiermit für den Zeitraum von

            [_]  6 Monaten
            [_] 12 Monaten
            [_] 24 Monaten
            [x] unbefristet

    davon befreit, etwas zu merken, d.h. wesentliche
    Verhaltensänderungen bei der Interaktion mit denkenden Wesen zu
    zeigen. Die Einstufung der o.a. Person nach dem amtlichen Index
    für Merkbefreiungen liegt bei dem Äquivalent von

            [_] einem Mensaessen vom Vortag
            [_] drei Hartkeksen in löslichem Kaffee
            [_] einer Kiste Schwarzbrot in Dosen
            [_] einem Quadratmeterstück Torfmoos während einer
                sechswöchigen Sommerdürre
            [x] einem Container erodiertem Sandstein
                (Streusandqualität)

    Die ausgesprochene Merkbefreiung erlischt mit dem Ablauf des

            [_] __.__.19__
            [_] __.__.20__
            [x] der vollständigen Erosion der körperlichen
                Bestandteile der o.a. Lebensform

    und gilt, sofern die o.a. Lebensform durch das nachstehende
    Kennzeichen als merkbefreit zu identifizieren ist:

            [_] eine rote Plastiknase
            [_] olives Stoffstück mit weißem Rand, auf der Schulter
                zu tragen
            [x] die Lebensform ist durch den Gesichtsausdruck
                zweifelsfrei als unbefristet merkbefreit zu
                erkennen.

    Die o.a. Lebensform ist durch den Erwerb dieses
    Merkbefreiungsscheins automatisch für die folgenden Tätigkeiten
    qualifiziert:

            [x] Markierungshütchen bei Abmarkierungsarbeiten auf
                Bundesautobahnen
            [_] Garderobenständer und Regenschirmständer in
                Restaurants bis zu, aber nicht eingeschlossen, 3
                Sterne
            [_] Regelstab in Schwerwasserreaktoren
            [x] Markierungsstab für das Fahrwasser im Nationalpark
                Wattenmeer
            [_] Landschaftsmerkmal/Orientierungshilfe in der Wüste
                Gobi

    Die Merkbefreiung für die o.a. Lebensform wurde in einem
    öffentlichen Merkbefreiungsverfahren ausgesprochen und ist nach
    Ablauf der Einspruchsfrist von 17 Sekunden rechtskräftig.

    Datum         Unterschrift  Dienstsiegel



    Stirnabdruck des Merkbefreiten


    Diese Merkfreiung wurde elektronisch erstellt und ist deswegen
    nicht unterschrieben.

Re: Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 13:28
von Herbert_Testmann
Um weitere gesundheitsschädliche Aufregung zu vermeiden, empfehle ich noch einmal folgende wundervolle Funktion im persönlichen Bereich jedes angemeldeten Users:

http://homematic-forum.de/forum/ucp.php ... &mode=foes

Re: Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 14:18
von SpiRu
PeterM hat geschrieben:UHRZEIT:
Diese Funktion gibt die aktuelle Uhrzeit im Format HH:MM:SS zurück.
Diese Beschreibung in der "Hilfe" ist definitiv falsch! Das Ergebnis des Funktionsaufrufs UHRZEIT ist vom Typ [Uhr], wobei Variablen dieses Typs intern eigentlich Real-Variablen sind. Das externe Darstellungsformat, wie hier völlig irreführend dargestellt, hat damit erst mal überhaupt gar nichts zu tun!

Code: Alles auswählen

Variablen u: [Uhr], s [Text]
u:= UHRZEIT
s:= u 
Erst bei der Zuweisung s:= u wird u von der Interndarstellung in das externe Darstellungs-Format HH.mm.ss umgewandelt. Wobei als Formatschablone die aus den Windows Sprach- und Regionaleinstellungen verwendet wird. Wenn Du da ss@mm@HH einstellst, wird die Zeit entsprechend formatiert.

Re: Bug: Inkonsistente Zeitfunktionen

Verfasst: 05.10.2012, 15:23
von SpiRu
Hier mal was zum Verständnis, da die Hilfetexte zum Thema Datum/Zeit und Formate weitgehend unbrauchbar oder zumindest irreführend sind:

Code: Alles auswählen

Funktion:    Ergebnis-Typ des Funktionsaufrufs
ZEIT      -  [Zeit]
DATUM     -  [Datum]
UHRZEIT   -  [Uhr]
Wobei die Typen [Datum] und [Uhr] quasi Untertypen von [Zeit] sind und lediglich unterschiedliche Formatschablonen bei der Umwandlung in eine Zeichenkette benutzen

Code: Alles auswählen

Variable z: [Zeit], d: [Datum], u: [Uhrzeit]
z:= "2012-10-30 14:45:11"
d:= z
u:= z
z,d,u haben jetzt alle den selben Inhalt!

Code: Alles auswählen

s:= z  ** Formatschablone "JJJJ-MM.TT HH.mm.ss
s:= d  ** Formatschablone "JJJJ-MM.TT"
s:= u  ** Formatschablone "HH.mm.ss"
Welche Formatschablone bei der Umwandlung in eine Zeichenkette verwendet wird, hängt - wie man sieht - vom Typ der Quell-Variablen ab!
Die Unter-Typen [Datum] und [Uhr] sind praktisch nur Hilfskonstruktionen zur formatierten Ausgabe anhand vorgegebener Format-Schablonen, da es in diesem System hier sonst keine anderen Möglichkeiten zur expliziten Ausgabeformat-Steuerung gibt.
  • Was fehlt, ist ein Typ für Zeitdifferenzen, also z.B. der Typ [ZeitDauer], um auch Zeitdifferenzen >= 24 Stunden genau so einfach darstellen zu können. Aber für eine solche Schablone gibt es meines Wissens keine Einstellmöglichkeit in den Windows Regional- und Spracheinstellungen. Sonst gäbe es vielleicht auch einen solchen Typ in Homeputer.