Zitat:
Lese Dir doch mal bitte alle Antworten in diesem Thread durch. Besonders würde ich ein Auge auf die von Steve werfen. Zitat:
|
Also das läuft zwar, aber es gibt immer falsche Daten usw. zurück.
Es stellt das Jahr immer um 111 Jahre zurück, warum auch immer. Hab im Moment:
Delphi-Quellcode:
Variable k vom Typ TDateTime.
DateTimeToSystemTime(czeit - izeit + Date, k);
SetLocalTime(k); @Sharky: Das eine ist die Zeit, die abgezogen wird von der Zeit, die vergangen ist seitdem man die Zeit abgefragt hat. :) Naja, das wird jetzt auch etwas tricky. Hat jemand 'ne andere Lösung, außer SetLocalTime oder SetSystemTime? Weil die spinnen schon etwas.. |
Okay,
letzter Versuch ;-) Der Code basiert auf TIDTime von den Indys
Delphi-Quellcode:
function Time2UTC(aLocalTime: TDateTime): TDateTime;
const MinsPerDay = 24 * 60; var zeitzone: TTimeZoneInformation; localdiff: integer; begin localdiff := 0; case GetTimeZoneInformation(zeitzone) of TIME_ZONE_ID_STANDARD: begin localdiff := (zeitzone.Bias) end; TIME_ZONE_ID_DAYLIGHT: begin localdiff := (zeitzone.Bias) + (zeitzone.DaylightBias) end; end; Result := ((aLocalTime * MinsPerDay) + localdiff) / MinsPerDay; end; procedure SetzeComputerZeit (aTime : TDateTime); var NewTime: TDateTime; SystemTime: TSystemTime; begin Newtime := Time2UTC(aTime); // Zeit in UTC umwandeln DateTimeToSystemTime(NewTime, SystemTime); // In TSystemTime wandeln SetSystemTime(SystemTime); // *blubb* end; procedure TForm1.Button1Click(Sender: TObject); var SyncTime : TDateTime; begin IdTime1.Host := 'ptbtime1.ptb.de'; // Time-Server SyncTime := IdTime1.DateTime; // Zeit mit den Indys holen SetzeComputerZeit(SyncTime); end; |
Re: Systemzeit verändern
Nein da spinnt nichts, du benutzt es nur nicht richtig...
Bist du mal mit nem Debugger durchgegangen und hast die einzelnen Werte LIVE geprüft? |
IdTime funktioniert nicht, bzw. das hab ich schon richtig eingebaut für die normale Internetverbindung. Leider funktioniert diese Komponente nicht bei Proxyservern, sonst würde ich sie da ja auch nehmen. ;)
Bei 'ner normalen Internetverbindung läuft alles einwandfrei. |
Hier mein Code:
Delphi-Quellcode:
Die letzte Zeile funzt noch net so ganz. Was könnte falsch sein? :|
czeit := now;
ShowMessage(DateTimeToStr(czeit)); czeit := EncodeTime(0, 0, ((stop - start) div 1000), ((stop - start) mod 1000)); DateTimeToSystemTime((izeit + czeit), k); DecodeTime(izeit, k.wHour, k.wMinute, k.wSecond, k.wMilliseconds); DecodeDate(izeit, k.wYear, k.wMonth, k.wDay); k.wSecond := k.wSecond - ((stop + start) mod 1000), ((stop + start) div 1000); |
Re: Systemzeit verändern
sollte k wirklich TDateTime sein?
Dann würde sich das ganze Datetimetosystemtime ja erübrigen. PS: du solltest wirklich ein wenig mehr eigeninitiative zeigen, Kompon Ente! |
k ist TSystemTime ;)
|
Zitat:
|
Jo, und weiter? Ich muss ja das, was ich encode auch wieder decoden, weil Subtrahieren nicht erlaubt ist bei dieser Methode, sonst würde ich ja einfach sagen:
Delphi-Quellcode:
Was mach ich nun?
DateTimeToSystemTime((czeit - izeit), k);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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