Am 02.11.2011 19:25, schrieb Ludo Brands:
Apparently not everything is that transparent under windows:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724944%28v=vs.85%2
9.aspx
"To inform Explorer that the time zone has changed, send the
WM_SETTINGCHANGE message."
WM_SETTINGCHANGE simply notifies you that the user changed the time
zone, because otherwise you might not be able to detect that (except you
read the settings from the registry yourself).
Or:
http://channel9.msdn.com/coding4fun/articles/Changing-time-zones
"By itself, changing the time zone doesn't have any apparent effect except
in new processes. In order to see the change, you need to send a system
notification message. This notification is made by calling
SendMessageTimeout with WM_SettingChange and a parameter of "intl". "
This is wrong. Changing the timezone effects e.g. all following calls to
GetLocalTime. See the following example program:
=== source begin ===
program timezonetest;
{$apptype console}
{$mode objfpc}{$H+}
uses
SysUtils;
begin
Writeln(FormatDateTime('c', Now));
Writeln('Please change the timezone and then press enter');
Readln;
Writeln(FormatDateTime('c', Now));
Writeln('Done');
Readln;
end.
=== source end ===
As you see there is no message processing.
My normal timezone is Berlin. Now I've run the program and changed the
timezone to Greenland (-3h). The output was the following:
=== output begin ===
03.11.2011 21:16:33
Please change the timezone and then press enter
03.11.2011 17:17:10
Done
=== output end ===
So your link which talks about "only affects new processes" is proven wrong.
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel