AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verändern derf Systemzeit

Ein Thema von philipp21 · begonnen am 26. Jul 2008 · letzter Beitrag vom 28. Jul 2008
Antwort Antwort
philipp21

Registriert seit: 29. Sep 2007
21 Beiträge
 
#1

Verändern derf Systemzeit

  Alt 26. Jul 2008, 07:32
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
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verändern derf Systemzeit

  Alt 26. Jul 2008, 10:08
guck mal ins MS Platform SDK unter GetSystemTime bzw. GetLocalTime
und SetSystemTime bzw. SetLocalTime
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

Re: Verändern derf Systemzeit

  Alt 26. Jul 2008, 10:29
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

zum Thema: 'Systemzeit' in der DP Suche gefunden

  Mit Zitat antworten Zitat
philipp21

Registriert seit: 29. Sep 2007
21 Beiträge
 
#4

Re: Verändern derf Systemzeit

  Alt 28. Jul 2008, 16:59
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: Verändern derf Systemzeit

  Alt 28. Jul 2008, 17:02
Nimm doch eine TDateTime-Variable, ändere sie mit den Funktionen aus DateUtils und wandle sie dann in TSystemTime um.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Verändern derf Systemzeit

  Alt 28. Jul 2008, 17:05
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;
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: Verändern derf Systemzeit

  Alt 28. Jul 2008, 17:08
Delphi-Quellcode:
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));
Die Reihenfolge machts.

Stephan
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Verändern derf Systemzeit

  Alt 28. Jul 2008, 23:03
Zitat von new32:
am einfachsten mit NtSetSystemTime (ist zwar nicht dokumentiert aber recht einfach zu benutzen).
Warum auf undokumentierte API-Funktionen ausweichen, wenn es dafür einen dokumentierten Weg gibt?

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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz