Systemuhr stellen Lazarus / Linux

tonevi
Beiträge: 2
Registriert: Di 1. Dez 2020, 13:13

Systemuhr stellen Lazarus / Linux

Beitrag von tonevi »

Hallo,

wie kann ich Uhrzeit & Datum per Lazarus Programm unter Linux neu setzen? In einem Delphi / Windows Programm hatte ich das so gelöst:

Code: Alles auswählen

PROCEDURE TForm1.Button1Click (Sender : TObject);    // PC Uhr einstellen
VAR       NewDateTime : TSystemTime;
BEGIN { TForm1.Button3Click }
  FillChar (NewDateTime, SizeOf (NewDateTime), #0);
  WITH NewDateTime DO
  BEGIN
   wYear  := StrToInt (Copy (EditDate.Text, 7, 2)) + 2000;
   wMonth := StrToInt (Copy (EditDate.Text, 4, 2));
   wDay   := StrToInt (Copy (EditDate.Text, 1, 2));
   wHour  := StrToInt (Copy (EditTime.Text, 1, 2));
   wMinute:= StrToInt (Copy (EditTime.Text, 4, 2));
   wSecond:= StrToInt (Copy (EditDate.Text, 7, 2));
   wMilliseconds:= 0;
  END { with NewDateTime };
  IF (SetLocalTime (NewDateTime)) = TRUE THEN ShowMessage ('Uhr neu gestellt')
                                         ELSE ShowMessage ('als Admin starten')
END { TForm1.Button1Click };

In Sysutils von Lazarus scheint es nur Funktionen zum Auslesen von Zeit & Datum zu geben, nicht aber zum Setzen.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Systemuhr stellen Lazarus / Linux

Beitrag von theo »

Du brauchst auf jeden Fall Root Rechte.
Dann sollte es mit dem Aufruf des Kommandos "date" gehen.
S.a.
https://forum.lazarus.freepascal.org/in ... ic=35029.0

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Systemuhr stellen Lazarus / Linux

Beitrag von Winni »

Hi!

SetLocalTime gibt's unter Unix/Linux nicht. Das ist system-space und nicht user-space.

Wie manche vielleich schon beim stellen der Uhr vom Desktop festgestellt haben: Da will er das root-Passwort.

Für Unix/Linux-Newbies:

Standard ist es, die Uhr auf UTC laufen zu lassen. Und jedem User seine Zeitzone zuzuweisen, hier MEZ bzw. MESZ.
Hintergrund ist, dass sich diese Betriebssystem immer als Netzwerk-OS begriffen haben. Und so alle Netz-Rechner die gleiche Zeit haben sollten. Egal, ob der Rechner in Kuala Lumpur, Rejkjavik oder Hintertupfingen steht.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Systemuhr stellen Lazarus / Linux

Beitrag von af0815 »

Unter Linux werden auch eigene Serviceprogramme vom System verwendet um die Uhrzeit stabil zu halten ntpd zum Beispiel. Das sollte man auch dem System überlassen. Und die Zeitzone sollte auch schon richtig eingestellt sein.

Das funktioniert sogar auf RasPi's sehr gut, die ja bekanntlich keine eingebaute Uhr haben, die somit auch nicht falsch gehen kann :-) , wie bei anderen Rechnern.

Was mit aufgefallen ist, das Lazarusprogramm die Änderungen an Zeitzone, Zeitumstellung nicht übernehmen solange sie laufen. Dann muss man aus der Unix Unit die Funktion ReReadLocalTime aufrufen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Systemuhr stellen Lazarus / Linux

Beitrag von sstvmaster »

Es gibt auch noch "fpsettimeofday" in der Unit BaseUnix.

In Synapse gibt es die NTP Funktion und hier speziell in der Unit synautil die Funktion "SetUTTime" (Zeile 827).
Hier kann man sehe wie es für die verschiedenen OS'es gemacht wird.

Ich hatte mal ein NTP Demo geschrieben, es sollte eigentlich auch unter Linux/Unix funktionieren.
Zu finden hier: viewtopic.php?f=11&t=12117

Natürlich braucht man Synapse aus dem OPM. Und Admin/Root Rechte zum ausführen.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

tonevi
Beiträge: 2
Registriert: Di 1. Dez 2020, 13:13

Re: Systemuhr stellen Lazarus / Linux

Beitrag von tonevi »

Danke für die vielen Antworten.

Ich habe es jetzt erst mal mit "date -s..." versucht. Das funktioniert soweit, stellt aber im Gegensatz zu meiner obigen Windows Variante nicht die Hardware Uhr des Rechners um. Anbei mein modifizierter Codeauszug.

Code: Alles auswählen

... uses Process;

var AProcess : TProcess;
    CMD      : STRING;
  
procedure TForm1.Button2Click(Sender: TObject);
begin
  Application.ProcessMessages;
  AProcess := TProcess.Create (NIL);

  CMD:= EditTime.Text + ' ' +                                     // HH:MM:SS
        Copy (EditDate.Text, 4, 2) + '/' +                        // Monat
        Copy (EditDate.Text, 1, 2) + '/' +                        // Tag
        Copy (EditDate.Text, 7, 2);                               // Jahr
  AProcess.CommandLine:= 'date +%T%D -s "' + CMD + '"';
//AProcess.Options:= AProcess.Options + [poWaitOnExit, poUsePipes, poStderrToOutPut];
  AProcess.Execute;
  AProcess.Free;
end;

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Systemuhr stellen Lazarus / Linux

Beitrag von theo »

tonevi hat geschrieben:
Mi 2. Dez 2020, 09:51
Ich habe es jetzt erst mal mit "date -s..." versucht. Das funktioniert soweit, stellt aber im Gegensatz zu meiner obigen Windows Variante nicht die Hardware Uhr des Rechners um. Anbei mein modifizierter Codeauszug.
Ja gut, aber da musst du dich bei Linux schlau machen, wenn du das wirklich haben willst.
hwclock wäre möglich: https://geek-university.com/linux/date- ... -commands/

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Systemuhr stellen Lazarus / Linux

Beitrag von Winni »

Hi!

date an der Konsole stellt sie SystemZeit.

Wenn man möchte, dass Datum und Zeit nicht nur flüchtig sondern permanent gestellt werden, dann braucht man hwclock.

hwclock erlaubt viele Parameter. Das Einfachste ist:

Code: Alles auswählen

hwclock -s
Das stellt die Hardware-Zeit - also im BIOS - auf die Systemzeit.
Nicht ungeduldig werden - je nach Rechner braucht das 1 bis 2 Sekunden.

Das hält dann bis die Cmos Batterie alle ist.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Systemuhr stellen Lazarus / Linux

Beitrag von af0815 »

Winni hat geschrieben:
Mi 2. Dez 2020, 10:48
Das hält dann bis die Cmos Batterie alle ist.
Wenn das System überhaupt eine CMOS Uhr hat :-) RasPi ist auch Linux, hat aber keine CMOS-Uhr.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Systemuhr stellen Lazarus / Linux

Beitrag von Winni »

Hi!

Für die ganz Armen mit Raspi ohne CMOS clock gibt es:

Code: Alles auswählen

fake-hwcklock 
Oder man kauft sich ne passende Uhr zum Raspi.
Oder man kauft sich nen richtigen Rechner.

Winni

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Systemuhr stellen Lazarus / Linux

Beitrag von Maik81SE »

Winni hat geschrieben:
Mi 2. Dez 2020, 17:35
Hi!

Für die ganz Armen mit Raspi ohne CMOS clock gibt es:

Code: Alles auswählen

fake-hwcklock 
Oder man kauft sich ne passende Uhr zum Raspi.
Oder man kauft sich nen richtigen Rechner.

Winni
Dabei wollte ich langfristig von meinen Laptops Abschied nehmen.
Nur sind die PIs noch zu langsam u 3GHz und der RAM dürfte auch gerne mit 16 GB zu buche schlagen...
Plus Ubuntu und es wären für meinen Geschmack die besten PCs ever 😁🙂
Gerade im Bereich Videorendering.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Systemuhr stellen Lazarus / Linux

Beitrag von af0815 »

Sorry wenn ich das sage, aber man(n) sollte immer am Boden bleiben. RasPi kann keinen PC wirklich ersetzen. Zumindest jetzt nicht. You get what you paid for - Du kriegst das was du bezahlt hast.

Bei Videorenddering musst du dir eine CPU und Motherboard suchen , das mit schnellen SSD zusammenabeitet. Oder du hast Software, die das auf viele Rechner und IO Subsysteme aufteilt.

Wenn bei mir 8 Cores hochfahren und Daten in die 24 GB Ram pumpen, so ist bei mir das IO-Subsystem der Bottleneck. Und der Rechner kostet doch ein wenig mehr als ein paar RasPis. Er macht aber das was ich mir erwartet habe. Ich würde nie daran denken einen RasPi für das Videorendering zu verwenden. Der RasPi 4 geht schon ins Eck, wenn ich ein Bild von einer 20mpx Kamera Streame.

Der RasPi ist mit 8GB jetzt noch oversized, wenn du bedenkst, das das meist genutzte RaspBian nur 32 Bit mit maximal 4GB ist. Ubuntu kann mehr, ist aber noch nicht der letzte Schrei am RasPi.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Systemuhr stellen Lazarus / Linux

Beitrag von Winni »

Hi!

Da es ja kaum etwas Neues in der Computerwelt gibt, bauen die ersten jetzt mit Raspis das, was Mitte der 90er Google und andere mit Linux-PCs gebaut haben: Cluster.
https://www.hardwareluxx.de/index.php/ ... i-3-b.html

Es geht sehr viel in der Computerwelt. Ob es sinnvoll ist und ob es sich rechnet, dass muss mal jeder selbst entscheiden.

One for the road: Da Glasfaser damals sehr teuer war, wurde das alles per Kupfer verdrahted. Und bekam sein eigenes Protokoll: HIPPI = High-Performance Peripheral Interface Über den Namen soll man sich nicht wundern: Das kam von der Uni Amsterdam.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Systemuhr stellen Lazarus / Linux

Beitrag von af0815 »

Das mit den Clustern ist nichts neues, das hat man schon mit den RasPi 1 gemacht. Ich glaube da ist ein Spieltrieb da, bei allen was günstig erscheint, sind mal die Grenzen auszuloten. Und Multiprozessing ist immer was, was besonders die Studenten auf den TUs interessiert.

Lustig ist auch der RasPi 400 https://www.raspberrypi.org/products/ra ... rType=home . Einfach Monitor dran und los gehts.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Systemuhr stellen Lazarus / Linux

Beitrag von PascalDragon »

af0815 hat geschrieben:
Mi 2. Dez 2020, 22:09
Sorry wenn ich das sage, aber man(n) sollte immer am Boden bleiben. RasPi kann keinen PC wirklich ersetzen. Zumindest jetzt nicht. You get what you paid for - Du kriegst das was du bezahlt hast.
Es kommt letztlich auf den Anwendungszweck an. Für einfache Büroarbeit mit E-Mails und Tabellenkalkulation kann ein Pi schon genug sein.
af0815 hat geschrieben:
Mi 2. Dez 2020, 22:09
Der RasPi ist mit 8GB jetzt noch oversized, wenn du bedenkst, das das meist genutzte RaspBian nur 32 Bit mit maximal 4GB ist. Ubuntu kann mehr, ist aber noch nicht der letzte Schrei am RasPi.
Ich nutze auf meinem Pi 4 ein ArchLinux für AArch64 und bin damit soweit sehr zufrieden - wobei ich den Pi 4 vorwiegend als Grundlage für die Emulation von Windows on ARM64 nutze. :P
FPC Compiler Entwickler

Antworten