Hallo Liste, hallo Frank,
Du schriebst:
Roland Goretzki schrieb:
ich möchte in ein Programm eine Stoppuhr einbauen, möglichst auch mit Sekundenbruchteilen. [...] Das Programm läuft bereits im Netz unter http://www.roland-goretzki.de/cgi-bin/notenhoeren.cgi
Ich nehme an, du willst dann die Zeit zwischen zwei Programmaufrufen messen, richtig? (Bei CGI-Programmen bedeutet ja jeder Seitenaufruf einen Programmaufrufen.)
Ja, so ist es. (Beides ;-)
Eine laufende Uhr im Browser des Benutzers ist so nicht darstellbar. (Das geht wohl am besten mit JavaScript oder so ...)
Eine laufende Uhr, die angezeigt wird, brauche ich nicht: Es soll nur die Zeit bis zur Erfüllung einer gewissen Anforderung gemessen und anschließend ausgegeben und/oder zur weiteren Verarbeitung gespeichert werden.
Inzwischen habe ich in einem Versuchsprogramm eine Uhr auf Sekundenbasis eingebaut, die auch bisher einwandfrei funktioniert.
Einziger "Nachteil": Sie darf nicht länger als 24 Stunden laufen, sonst zeigt sie die gemessene Zeit minus dem Überschuß an Tagen an, was aber für meine Zwecke, wo es um Übungen geht, die höchstens einige Minuten dauern, egal ist.
Sie basiert auf GetTimeStamp.
Diese Uhr zu bauen, war für mich eine Riesenanstrengung (das soll keine Klage sein, sondern nur ein Hinweis darauf, daß das Programmieren mir doch noch sehr, sehr schwer fällt, auch wenn es Freude macht :-), obwohl ich sie eigentlich vor Jahren schon einmal für ein anderes Programm gebastelt hatte, für welches sie auch tauglich war.
Aber dort konnte ich einige Fehler ausmachen, die sich damals scheinbar nicht ausgewirkt haben.
Nun ist sie entsprechend meinen Fähigkeiten sauberer programmiert. Zur evtl. Begutachtung hänge ich sie an diese E-Mail an.
Beim Versuch, sie auf Mikrosekundenbasis aufzubauen, was, so weit ich das beurteilen kann, sicherlich auch geht (weil sich mit GetTimeStamp ja auch die Mikrosekunden erfassen lassen), bin ich allerdings steckengeblieben.
GPC hat (in der Unit GPC) die Funktion:
function GetMicroSecondTime: MicroSecondTimeType;
Der Rückgabewert ist die Zeit in µs seit 1.1.1970 0:00 UTC. Man könnte also beim 1. Aufruf den Wert speichern und beim 2. Aufruf die Differenz zum aktuellen Wert berechnen.
Du kannst eben doch hellsehen: So etwas habe ich gesucht. :-)
Damit hätte ich sie gebaut, wenn ich das eher gewußt hätte. Das ist doch für Pascal dasselbe wie "date +%s" für die shell, außer daß es eben auch mit Mikrosekunden läuft, oder?
Vielleicht baue ich damit ja trotzdem noch eine Uhr, mir scheint, daß es damit einfacher gehen könnte.
Mit "date +%s" habe ich mir schon vor Jahren einige Scripts für das Klavierüben gebastelt, die folgendes tun:
Wenn ich übe, öffne ich die Datei für das Musikstück, welches ich gerade üben will, drücke (das habe ich mir im vi so eingerichtet) die 9, die Zeit wird gemessen (diese unix-Zeit ab 1970), und ein entsprechender Text wird in die Datei eingetragen.
Wenn ich aufhöre zu üben, drücke ich die 8, die Zeit wird wieder gemessen und entsprechender weiterer Text wird eingetragen, der auch die abgelaufene Zeit seit der ersten Messung enthält.
Dabei kommt es ja auch wirklich nicht auf Sekundenbruchteile an.
Die Genauigkeit ist hier natürlich durch das Netz beschränkt. Je nach Anbindung des Benutzers und Komplexität der Seite kann schon die Übertragung und der Aufbau der Seite Sekunden dauern, sodass die Anzeige von Sekundenbruchteilen wenig aussagekräftig wäre.
Diese Gedanken hatte ich inzwischen auch schon. Außerdem hatte ich ja in der ersten E-Mail zu diesem Thread nur gesagt: "möglichst" auch mit Sekundenbruchteilen.
Aber für schnelle Verbindungen und einfache Seiten vielleicht immerhin Zehntelsekunden ...
Mehr hätte ich auch gar nicht gewollt. :-)
Jedenfalls Danke für die Antwort.
Fröhliche Grüße Roland