![]() |
Verändern derf Systemzeit
Hallo (ich bin Anfänger und habe noch nciht wirklich viel Ahnung vpm Programieren)
Ich muss ein kleines Programm schreiben mit 3 Knöpfen. 1. Aktuelle PC-Zeit +1 TAg 2. aktuelle PC-Zeit +1 Woche und 3. aktuelle PC-Zeit +1 Monat kann mir jemnad sagen wie ich die systemzeit euslesen und beeinflussen kann. Das wäre echt super. p.s. bitte mit erklärung sonst glaube cih ncht, dass ich es so einfach umsetzen könnte DANKE |
Re: Verändern derf Systemzeit
guck mal ins MS Platform SDK unter GetSystemTime bzw. GetLocalTime
und SetSystemTime bzw. SetLocalTime |
Re: Verändern derf Systemzeit
Guten Morgen phillip21...
zum Programmieren braucht man Geduld wie Wissen. Anhand Deiner Schreibweise ist zu erkennen, daß du die Frage nur schnell runtergetippt hast ohne nachzudenken (Buchstabendreher, Taste daneben getroffen) ... so wird das nix :roll: zum Thema: ![]() :hi: |
Re: Verändern derf Systemzeit
Hallo, das mit dem Systemzeit verändern hat gut funktioniert.
Ich habe nur das Problem, dass wenn ich zum Beispiel: den 31 Januar um +1 erhöhen will, macht er ncihts (ist ja auch klar! es gibt ja auch keinen 32 Januar). So meine Frage: Wie kann ich am einfachsten ihn (in solchen Fällen) den Monat +1 addieren lassen und die Anzahl der Tage auf 1 reduzieren lassen. Kann mir da jemand helfen??
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var time : TSystemTime; jahr : integer; monat : integer; tag : integer; akstd :integer; akmin :integer; aksec : integer; begin // aktueller Tag / Monat / Jahr wird ausgelesen jahr := strtoint(FormatDateTime('yyyy',now)); monat := strtoint(FormatDateTime('mm',now)); tag := strtoint(FormatDateTime('dd',now)); akstd := strtoint(FormatDateTime('hh',now)); akmin := strtoint(FormatDateTime('nn',now)); aksec := strtoint(FormatDateTime('ss',now)); //itag = intervall / Tag wird um interval erhöht / jahr und monat wird auf aktuelle werte gesetzt if IntToStr(FIntervall.intitag) <>'' then itag := FIntervall.intitag else itag := 1; time.wYear := jahr; time.wMonth := monat; time.wDay := tag + itag; time.wHour := akstd; time.wMinute := akmin; time.wSecond := aksec; time.wMilliseconds := 0; SetLocalTime(time) end; |
Re: Verändern derf Systemzeit
Nimm doch eine TDateTime-Variable, ändere sie mit den Funktionen aus DateUtils und wandle sie dann in TSystemTime um.
|
Re: Verändern derf Systemzeit
am einfachsten mit NtSetSystemTime (ist zwar nicht dokumentiert aber recht einfach zu benutzen).
Die erwartet als Parameter eine Variable die die 100ns seit 1.1.1600(oder ähnlich) angibt. da musst du nur ne Konstante addieren und fertig. Sonst bei SetSystemTime musst du dir was einfallen lassen: z.B. Monat:=Monat+trunc(Tag/31); Tag:=Tag mod 31; |
Re: Verändern derf Systemzeit
Delphi-Quellcode:
Die Reihenfolge machts.
if IntToStr(FIntervall.intitag) <>'' then // wobei, wenn das Konstrukt man gut geht - Integer nach String und dann Leersting?
itag := FIntervall.intitag else itag := 1; jahr := strtoint(FormatDateTime('yyyy',now + itag)); monat := strtoint(FormatDateTime('mm',now + itag)); tag := strtoint(FormatDateTime('dd',now + itag)); akstd := strtoint(FormatDateTime('hh',now + itag)); akmin := strtoint(FormatDateTime('nn',now + itag)); aksec := strtoint(FormatDateTime('ss',now + itag)); Stephan |
Re: Verändern derf Systemzeit
Zitat:
Man muss übrigens auch erst das Privileg, um die Systemzeit zu ändern, aktivieren. Ein normaler Benutzer hat dies übrigens nicht per default. Du solltest dies auch noch berücksichtigen in deinem Code. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz