簡體   English   中英

如何在delphi 7中使用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 啟動時,它們會被您的應用程序進程繼承。 但是,當然,當您通過在 Windows 資源管理器(例如)中雙擊其圖標來運行您的應用程序時,它會以未提升的權限執行。

要更改系統時間,您需要提升權限。 這解釋了觀察到的行為。

當您想從調試器外部啟動應用程序時,請確保將其提升運行。 例如,您可以右鍵單擊其圖標並選擇“以管理員身份運行”。

事實上,你幾乎可以自己弄清楚這一點。 因為每次使用 Windows API 函數時,都會檢查其返回值。 文檔

如果函數成功,則返回值非零。

如果函數失敗,則返回值為零。 要獲取擴展錯誤信息,請調用GetLastError

所以你應該做

if not SetLocalTime(st) then
  RaiseLastOSError

這在我的系統上告訴我我沒有足夠的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM