程序库: 多功能测试仪 - 页 20

 

一个堆崩溃的棘手错误,似乎已经存在了很长时间。

    ::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 ));
    user32::SendMessageW(Handle, CB_GETLBTEXT, 0, Buf);

CB_GETLBTEXTLEN:返回值是字符串的长度,以 TCHAR 为单位,不包括结束符空字符

CB_GETLBBTEXT:缓冲区必须有足够的空间容纳字符串和结束符空字符。

应写入

::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 )+1);
 
traveller00:

一个巧妙的失误,一个似乎活了很久的堆积。


CB_GETLBTEXTLEN:返回值是字符串的长度,以 TCHAR 为单位,不包括结束符空字符。

CB_GETLBBTEXT:缓冲区必须有足够的空间容纳字符串和结束符空字符。

应写入

谢谢!的确,使用这种方法的 GetExpertName 几乎已成为一种基本方法。

 
fxsaber:

在使用 GetExpertName 时,它几乎已成为一种基本功能。

怎么说呢,它SetExpertName 中使用的,而 SetExpertName 又是从 Run 中 提取的 ,事实上它是 MultiTester 的主要功能之一。虽然这种错误很少见,但我还是无意中发现了。

 
traveller00:

怎么说呢,它是在 SetExpertName 中使用的 ,而SetExpertName 则是从 Run提取的 ,事实上它也是 MultiTester 的主要功能之一。虽然这个错误很少出现,但我还是无意中遇到了。

已经有一段时间没有这样了。

 
    Str += iBeginTime ? "FromDate==" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate==" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;

FromDate==" 和 "ToDate==" 中多余的等号 ?

 
traveller00:

FromDate==" 和 "ToDate==" 中多余的等号 ?

没有必要,谢谢。

 
您好。我正在使用 MultiTester 作为标准远期的 WFO,但标准的 1/4 周期分隔符是不够的。我试图理解您的代码并教会 MultiTester 填入正向日期字段,但如果没有 OOP 知识,我是做不到的。我找到了 MTTester 文件中的 Run() 函数。我无法进一步理解。所有参数都粘在一行中,然后传给 SetSettings2 和 SetSettings,在那里它们被相乘并传给剪贴板。如果字符串中出现另一个参数,以及 MultiTester 将数据插入窗口的位置,您能告诉我还需要修改什么吗?
同时,请告诉我 TesterSettings.Add() 函数中 INITDEINIT fInit 和 INITDEINIT fDeinit 的用途。
 
Good Beer:
您好。我正在使用 MultiTester 作为标准远期的 WFO,但标准的 1/4 周期分隔符是不够的。我试图理解您的代码并教会 MultiTester 填入正向日期字段,但如果没有 OOP 知识,我是做不到的。我找到了 MTTester 文件中的 Run() 函数。我无法进一步理解。所有参数都粘在一行中,然后传给 SetSettings2 和 SetSettings,在那里它们被相乘并传给剪贴板。如果该行中出现另一个参数,以及 MultiTester 在何处将数据插入窗口,需要更正哪些内容?

在 "测试仪"->"设置 "选项卡中按 CTRL+C,然后在文本编辑器中按 CTRL+V。您将看到测试仪的 所有设置

ForwardMode
ForwardDate

这两个参数负责转发(当第一个参数为 4 时,第二个参数相关)。


MTTester 通过剪贴板管理测试仪设置,通过 CTRL+V 创建文本编辑器中的设置。

 
fxsaber:


MTTester 通过剪贴板管理测试仪设置,通过 CTRL+V 创建文本编辑器中的设置。

谢谢。

任务很明确:从顶部开始数,找到正确的一行,然后用所需的文本替换。

 
Good Beer:

任务很明确:从顶部找到正确的一行,并用所需的文字替换。

行号的变化并不重要。

  static bool Run( const string ExpertName = NULL,
                   const string Symb = NULL,
                   const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
                   const datetime iBeginTime = 0,
                   const datetime iEndTime = 0,
                   const int ForwardMode = 0 )
  {
    string Str = "[Tester]\n";

    Str += (ExpertName != NULL) ? "Expert=" + ExpertName + "\n" : NULL;
    Str += (Symb != NULL) ? "Symbol=" + Symb + "\n" : NULL;
    Str += iBeginTime ? "FromDate=" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate=" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;
    Str += "ForwardMode=" + (string)ForwardMode + "\n";

    return(MTTESTER::SetSettings2(Str) &&
           MTTESTER::SetTimeFrame(period) && MTTESTER::ClickStart());