【问题标题】:C++/CLI: SYSTEMTIME Programming ErrorC++/CLI:SYSTEMTIME 编程错误
【发布时间】:2011-06-12 00:05:11
【问题描述】:

当某个时间到来时,我正在尝试建立一个小警报系统来做某事(IDK 我想要的)。但是,经过一些简短的更改后,当我在 WinForm 中运行该代码时,我遇到了所有这些错误。但是这段代码(不变)在我的空项目中工作!我有下面的sn-p:

int checktime ()
{
    SYSTEMTIME time;
    GetLocalTime( &time );
    int hour = time.wHour;
    int minute = time.wMinute;
    if (hour > 12) hour -= 12;
    if hour == 8
    {
        this->progressBar1->PerformStep();
    }
}

与往常一样,如果有任何帮助或建议,我将不胜感激。谢谢!

【问题讨论】:

  • 你说“我得到了所有这些错误”,但你没有说错误是什么。我们不是通灵者。
  • @John 但我知道你会这么说......
  • 是的,好吧,我们不是通灵者,但我们是可以预测的。 :)
  • @Francis 你能让它工作吗?
  • OK,报错如下:error C2061: syntax error : identifier 'hour'error C2143: syntax error : missing ';' before '{'请帮忙...

标签: visual-studio-2008 if-statement c++-cli int systemtime


【解决方案1】:
if hour == 8

这不是有效的 C++ 或 C++/CLI。 if 语句中的括号不是可选的。

您为什么不使用 .NET System::DateTime::Now?整个功能可能是:

int checktime ()
{
   int hour = System::DateTime::Now.Hour;
   if (hour == 8 || hour == 20)
    this->progressBar1->PerformStep();
}

【讨论】:

    【解决方案2】:

    使用Timer 对象来跟踪经过的时间。

    在设计器中,将一个计时器从工具箱拖到表单上,或在代码中实例化一个。您可以设置持续时间(使用interval 成员),每个“滴答”,系统都会引发一个事件,您可以执行一个操作。

    这很好,因为它几乎就像有另一个线程在后台跟踪。

    【讨论】:

    • 在计时器滴答声中,您可能仍需要检查当前时间。这个 sn-p 似乎没有等待特定的时间。
    • @Ben 我同意检查当前时间是一个好主意,如果只是为了纠正抽动间隔中的任何漂移。我的印象是 OP 正在尝试上午 8 点(编辑:或晚上 8 点,正如您所指出的那样),尽管代码不够具体。
    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2016-07-22
    • 2011-04-13
    • 2016-08-12
    • 2011-02-15
    相关资源
    最近更新 更多