delphi7中如何使用setlocaltime?
How to use setlocaltime in delphi 7?
包含更改时间例程的程序在 Borland Delphi 7 IDE 中运行时确实会更改时间。但是它独立运行时(Delphi IDE之外)不会改变时间。我正在使用 windows 7. 你能帮忙吗?谢谢。
...
procedure TForm1.changetime;
begin
DateSeparator:='-';
ShortDateFormat:='yyyy-MM-dd';
LongDateFormat:='yyyy''Year'',MM''Month'',dd''Date''';
TimeSeparator:=':';
DateTimetoString(date,'yyyy-mm-dd',now);
DateTimetoString(time,'hh:nn:ss',now);
cd:='2014-06-01 '+time;
d1:=StrToDateTime(cd);
DateTimeToSystemTime(d1,systemtime);
SetLocalTime(SystemTime);
end;
...
我的通灵能力告诉我你正在 运行宁 Delphi 7 IDE 具有管理权限。
如果是这样,当您的应用程序进程从 IDE 启动时,这些将由您的应用程序进程继承。但是,当然,当您 运行 您的应用程序通过 double-clicking 它在 Windows 资源管理器中的图标时(例如),它会以未提升的权限执行。
要更改系统时间,您需要提升权限。这解释了观察到的行为。
当您想从调试器外部启动应用程序时,请确保 运行 它已提升。例如,您可以 right-click 它的图标和 select “运行 作为管理员”。
实际上,您几乎可以自己解决这个问题。因为每次使用 Windows API 函数时,都会检查它的返回值。来自 the documentation:
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError
.
所以你应该这样做
if not SetLocalTime(st) then
RaiseLastOSError
我的系统告诉我权限不足。
包含更改时间例程的程序在 Borland Delphi 7 IDE 中运行时确实会更改时间。但是它独立运行时(Delphi IDE之外)不会改变时间。我正在使用 windows 7. 你能帮忙吗?谢谢。
...
procedure TForm1.changetime;
begin
DateSeparator:='-';
ShortDateFormat:='yyyy-MM-dd';
LongDateFormat:='yyyy''Year'',MM''Month'',dd''Date''';
TimeSeparator:=':';
DateTimetoString(date,'yyyy-mm-dd',now);
DateTimetoString(time,'hh:nn:ss',now);
cd:='2014-06-01 '+time;
d1:=StrToDateTime(cd);
DateTimeToSystemTime(d1,systemtime);
SetLocalTime(SystemTime);
end;
...
我的通灵能力告诉我你正在 运行宁 Delphi 7 IDE 具有管理权限。
如果是这样,当您的应用程序进程从 IDE 启动时,这些将由您的应用程序进程继承。但是,当然,当您 运行 您的应用程序通过 double-clicking 它在 Windows 资源管理器中的图标时(例如),它会以未提升的权限执行。
要更改系统时间,您需要提升权限。这解释了观察到的行为。
当您想从调试器外部启动应用程序时,请确保 运行 它已提升。例如,您可以 right-click 它的图标和 select “运行 作为管理员”。
实际上,您几乎可以自己解决这个问题。因为每次使用 Windows API 函数时,都会检查它的返回值。来自 the documentation:
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call
GetLastError
.
所以你应该这样做
if not SetLocalTime(st) then
RaiseLastOSError
我的系统告诉我权限不足。