Code: Alles auswählen
***********************************************
** Variablen:
** r: [Zahl] Startwert 0,000000000000000000
** u: [Uhr](Zeit)
** T_____: [Zeichen]
** Ticker: Objekt [Zeichen] (mehrzeilig)
***********************************************
Ewig:
r := ZEIT-(DATUM+UHRZEIT)
u := r
Ticker := "<<" + Ticker
wenn u > "00:00:05" dann
T_____:= "Zeitdifferenz > 5 Sekunden! Dürfte nie vorkommen!<<"
Sprachausgabe(T_____)
Ticker:= T_____ + Ticker
warte("0:0:7")
endewenn
T_____ := r*24*60*60 + " Line_1: r*24*60*60"
Ticker := T_____ + "<<" + Ticker
T_____ := r*24,0*60,0*60,0 + " Line_2: r*24,0*60,0*60,0"
Ticker := T_____ + "<<" + Ticker
T_____ := r + " Line_3: r"
Ticker := T_____ + "<<" + Ticker
T_____ := u + " Line_4: u"
Ticker := T_____ + "<<" + Ticker
r := r*24*60*60
T_____ := r + " Line_5: r*24*60*60"
Ticker := T_____ + "<<" + Ticker
** warte("00:00:07,3456789") <-- Bug: wird kommentarlos als "00:00:00" interpretiert
warte("00:00:07,3456789")
warte("00:00:07")
gehezu Ewig
In Line_2 werden sowohl die Multiplikationen vergessen, als auch der Text (und jeder weitere Ausdruck dahinter)
In Line_3 wird r und Text korrekt ausgegeben
In Line_4 wird r als Zeitvariable u Type-gecastet und mit der Windows Zeitschablone für Uhrzeit richtig ausgegeben
In Line_5 wurde r vorher richtig multipliziert, der Text ebenfalls mit ausgegeben
Da die Anweisungen bei Line_1 und Line_2 nach dem ersten "*" offenbar als Kommentar gewertet werden, ist die Hilfskonstruktion mit T_____ erforderlich, weil sonst nicht nur der Zeilenvorschub "<<" fehlen würde, sondern auch ein abschließendes + Ticker, wodurch der alte Inhalt von Ticker nicht mehr hinten dran gehängt würde.
Eine weitere System-Macke:
Beim ersten Aufruf von ZEIT-(DATUM+UHRZEIT) ist die Differenz manchmal größer als 5 Sekunden. Was sie theoretisch niemals sein dürfte, wenn UHRZEIT die auf glatte 5 Sekunden abgerundete Uhrzeit aus ZEIT wäre!
Dass der Compiler die Multiplikationen vergisst, ist eindeutig ein Compiler-Fehler. Das Mindeste, was man erwarten könnte, wenn er mit einem Ausdruck nicht klar kommt, wäre eine Fehlermeldung! Da er mit "r := r*24*60*60" aber klar kommt, wäre das höchstgradig inkonsistent!