Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2767|回复: 8

请教,如何在程序中修改linux系统的日期和时间?

[复制链接]

该用户从未签到

发表于 2013-8-25 11:45:00 | 显示全部楼层 |阅读模式
如题,通过lazarus编程如何实现在程序中修改linux系统的日期和时间?
谢谢,请大家赐教!
回复

使用道具 举报

该用户从未签到

发表于 2013-8-25 13:19:25 | 显示全部楼层
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2013-8-25 16:21:08 | 显示全部楼层
var
  VProcess: TProcess;
begin
  if Edit1.Text<>'' then
    begin
      VProcess := TProcess.Create(nil);
      try
        VProcess.CommandLine := 'sh -c "sudo hwclock --set --date="08/25/2013 13:16:00""';
        VProcess.Options := [poWaitOnExit, poUsePipes];
        VProcess.Execute;
        VProcess.CommandLine := 'sh -c "sudo hwclock --hctosys"';
        VProcess.Options := [poWaitOnExit, poUsePipes];
        VProcess.Execute;
      finally
        VProcess.Free;
      end;
    end
  else
    begin
      Edit1.SetFocus;
      showmessage( '请输入日期时间!'+#13+'日期时间不能为空!' );
    end;



我修改了一下,程序执行后系统时间没有修改,但是如果在终端中执行上面两条命令,系统时间可以修改,请帮忙再看看究竟哪里有问题,另外我是在root用户下用lazarus编程执行的。
再次感谢。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-8-25 19:29:39 | 显示全部楼层
本帖最后由 zouzhongming 于 2013-8-25 19:41 编辑

procedure TForm1.Button1Click(Sender: TObject);
var
  s : ansistring;
begin
  RunCommand('/bin/bash',['-c','sudo hwclock --set --date="08/25/2013 15:16:00"'],s);
  RunCommand('/bin/bash',['-c','sudo hwclock --hctosys'],s);
end;
你试一试这个方法!可以改变系统时间。

摄像头更改如下:
RunCommand('/bin/bash',['-c','fswebcam -d /dev/video0 -D 1 --rotate 90 /windows/tools/test.jpg'],s);

回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2013-8-26 08:02:06 | 显示全部楼层

    您好:
    按照您的代码试了一下,还是不行,和版本有关系吗,请问您用的是什么版本?我用的是Red Hat Enterprise Linux Server  版本6.4(Santiago) 内核 Linux 2.6.32-358.el6.i686  GNOME 2.28.2
    谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-8-26 12:05:48 | 显示全部楼层
你加群:146204 或 34176611 来试试
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-8-26 13:15:59 | 显示全部楼层
本帖最后由 zouzhongming 于 2013-8-26 13:23 编辑

我用的是Debian 6.07 (squeeze) 版本 内核 Linux 2.6.32-5-amd64  GNOME 2.30.2,lazarus 1.0.10,fpc 2.6.2.RunCommand()必须在FPC2.6.2中运行。
测试通过。
unit time;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Process;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  s : ansistring;
begin
  RunCommand('/bin/bash',['-c','sudo hwclock --set --date="08/25/2013 19:32:00"'],s);
  RunCommand('/bin/bash',['-c','sudo hwclock --hctosys'],s);
  RunCommand('/bin/bash',['-c','fswebcam -d /dev/video0 -D 1 --rotate 90 /windows/tools/test.jpg'],s);
  RunCommand('/bin/bash',['-c','sudo dmidecode'],s);
  memo1.Text:=s;
end;

end.
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2013-8-26 13:35:29 | 显示全部楼层
我再装Debian 6.07 试一下,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-9-1 20:57:30 | 显示全部楼层
FPC中的Dos单元有SetSystemTime函数,你可以试试,如果Dos单元是可以跨平台的话。
PS:我没有在Linux系统上使用过,在Window7 32位 旗舰版 + Lazarus 1.0.10上测试通过。
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 16:18 , Processed in 0.054202 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表