gpt4 book ai didi

delphi - 如何在 delphi 7 中使用 setlocaltime?

转载 作者:行者123 更新时间:2023-12-05 08:49:11 25 4
gpt4 key购买 nike

包含更改时间例程的程序在 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 启动时,它们将被继承。但是,当然,当您通过在 Windows 资源管理器中双击其图标(例如)来运行您的应用程序时,它会以未提升的权限执行。

要更改系统时间,您需要提升权限。这解释了观察到的行为。

当您想从调试器外部启动您的应用程序时,请确保以提升的方式运行它。例如,您可以右键单击其图标并选择“以管理员身份运行”。

实际上,您几乎可以自己解决这个问题。因为每次使用 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

我的系统告诉我我没有足够的权限。

关于delphi - 如何在 delphi 7 中使用 setlocaltime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64449732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com