buempi hat geschrieben:Du begreifst es nicht? - Zeitvariablen sind Variablen, um Zeitpunkte im Format "dd.mm.yy hh:mm:ss" aufzunehmen und keine Real-Variablen!
Du begreifst es nicht!
Du hast wohl immer noch nicht verstanden, dass Zeitvariable die Zeit
nicht in einem bestimmen
externen Darstellungs- (und zudem von den Windows Regions- und Sprachoptionen abhängigen)
Format wie "dd.mm.yy hh:mm:ss" speichern.
Mit Zeichenketten kann man nicht rechnen, mit Zeitvariablen schon:
Code: Alles auswählen
dt, Zeit1, Zeit2 [Zeit],
ds [Zeichen]
string1 [Zeichen] Startwert "Dies ist ein Text"
string2 [Zeichen] Startwert "dd.mm.yy hh:mm:ss"
dt:= Zeit2 - Zeit1
ds:= string2 - string1 ** bewirkt übrigens (ohne Compiler-Kommentar!) das selbe wie
ds:= string2
dt:= ist klar und ergibt je nach Kontext einen Zeitpunkt (Zeitpunkt-Zeitdauer) oder eine Zeitdauer/Zeitdifferenz (Zeitpunkt-Zeitpunkt).
Aber eine Differenz von Zeichenketten ist nicht definiert!
(Hier kommt dann garantiert ein "ja, aber..." Einwand)
Zeitvariable sind definitiv (als [Zeit], [Uhr], [Datum] Type-gecastete)
Real-Variable! Mit denen man auch ganz normal rechnen kann!
Und ob der Inhalt dann als Zeitdifferenz (Dauer) oder als Datum relativ zu "1899-12-30 00:00:00" zu interpretieren ist, hängt vom Kontext ab.
Code: Alles auswählen
dt:= "00:00:00"
dt:= 0,0
dt:= dt + 1,5
dt:= dt + 1+"12:00:00"
erhöht dt jeweils um 1 Tag und 12 Stunden, unabhängig davon, wie der Inhalt zu interpretieren ist (Datum oder Zeitdifferenz). Die beiden verwendeten Schreibweisen für 1,5 Tage und deren Zuweisung an eine Variable vom Typ [Zeit] beweisen übrigens, dass Du mit Deiner Aussage
buempi hat geschrieben:Zeitvariablen sind ... keine Real-Variablen!
definitiv falsch liegst! Ebenso die Zuweisung des Real-Werts 0,0 an die Zeitvariable, die der Compiler nicht nur klaglos akzeptiert, sondern auch richtig übersetzt!
Allerdings kann eine Zeit-Variable nur bedingt auch als Real-Variable verwendet werden. Es funktionieren nur Zuweisung, Addition und Subtraktion. Multiplikation etc. wie mit "echten" Real-Werten geht nicht! Was einem der tolle "Compiler" aber nicht sagt, sondern einfach
kommentarlos an dieser Stelle keinen Code erzeugt - wie auch an zahlreichen anderen Stellen. Jedesmal kommentarlos! Lauter üble Bugs!
Es würde zwar wenig Sinn machen, ein Datum wie 2012-10-22 mit 365,0 zu multiplizieren, eine tägliche Laufzeit aber schon, um daraus z.B. die Jahreslaufzeit zu errechnen. Die überflüssigen Einschränkungen bei den Operationen sind daher nicht nur völlig unbegründet, sonder auch kontraproduktiv!
FHZ 1000 PC, Homeputer Studio V2.0 Rel. 120301
FHT80b-Raumregler, Windows XP (SP3)
Bugs? - Das sind keine Bugs! Das sind Features!