错误、漏洞、问题 - 页 3040

 
Andrei Trukhanovich:

mql字符串真的不喜欢字符串中的空字符,也不喜欢字面意义上的空字符,在函数中也是如此。

唯一正常的方法是将三个带结束符的字符串翻译成一个数组。

也就是说,现在的这种行为是几年前故意 为之的。我不知道原因是什么。

除了StringToCharArray之外,还有哪个函数在内部空值时不能正常工作?

例如,StringToShortArray--工作起来没有错误。

StringCompare曾经工作不正确,但这在很久以前就被修复了。

至于StringLen,它不能正确工作。

关于交易、自动交易系统和策略测试的论坛

虫子、虫子、问题

A100, 2019.05.15 13:45

只是部分纠正了错误.... 为什么不呢?在我的记忆中,StringLen总是正确地工作(至少在x32中)。

 
A100:

我不太记得了,在某一时刻,一个内部为空的字符串被截断为零,也许是stringconcatenate,也许是用简单的字符串操作。

 

很好的论坛,今天下午就开始发送回复了。回复本身已经丢失了。

星期一,下午的时候...


 

几个终端被最小化。然而,每个终端都会向自己的警报窗口发出警报--不是折叠的。

我如何知道哪个警报窗口对应于哪个终端?

 
fxsaber:

几个终端被最小化。然而,每个终端都会向自己的警报窗口发出警报--不是折叠的。

我怎样才能了解哪个警报窗口对应于哪个终端?

我不知道什么是唯一的终端ID,但你可以添加到警报AccountInfoString(ACCOUNT_COMPANY)。我不认为有人会将几个MT5实例同时登录到同一个经纪公司,尽管假设如果一个人需要坐在同一个经纪公司的不同账户上,这仍然是合理的。在这种情况下(最坏的情况),AccountInfoInteger(ACCOUNT_LOGIN)AccountInfoString(ACCOUNT_SERVER) 可能有效。

 
x572intraday:

我不知道什么是唯一的终端ID,但你可以在警报中加入AccountInfoString(ACCOUNT_COMPANY)。我不认为有人会在同一时间有几个MT5实例登录到同一经纪公司,尽管假设如果你需要坐在同一经纪公司的不同账户上,它可能仍然是值得的。在这种情况下(最坏的情况),AccountInfoInteger(ACCOUNT_LOGIN)AccountInfoString(ACCOUNT_SERVER) 就可以。

是的,你可以把任何识别数据放入你的警报中。但问题是关于一般情况的。

 
A100:

除了StringToCharArray之外,还有哪个函数在内部有零时不能正常工作?

例如,StringToShortArray 的工作没有错误。

StringCompare曾经工作不正确,但这在很久以前就被修复了。

至于StringLen


你是对的,改变了StringToCharArray的行为,现在它是针对整个字符串的长度,而不是到第一个'/0'字符为止。

 
Ilyas:

你是对的,改变了StringToCharArray的行为,现在是整个字符串的长度,而不是到第一个'\0'字符为止。

那么StringToCharArray和StringToShortArray 之间只有一个区别

关于交易、自动交易系统和策略测试的论坛

错误、漏洞、问题

A100

, 2021.05.25 00:16
void OnStart()
{
    string text = "ABC";
    const int start = 0, count = 0;
    uchar array1[]; int n1 = StringToCharArray(  text, array1, start, count );
    short array2[]; int n2 = StringToShortArray( text, array2, start, count );
    Print( n1, ":", n2 );
}

结果:4:0

预期:0:0

 
A100:
那么StringToCharArray和StringToShortArray 之间只剩下 一个区别

使得行为变得相同。


此外:在不久的将来,数组和字符串将得到方法的补充,例如。

str.ToCharArray(char_arr, from_position, symbol_count);
str.Length();

arr.Size();
string str = char_arr.ToString( code_page );

if(!obj_arr.Push( constructor_parameters ))
   CriticalError("failed to add element");

obj_arr.Sort( compare_func_ptr, context );

obj_arr.Select( uint_result_index_array, filter_func_ptr, context );
 
Ilyas:

在不久的将来,数组和字符串的方法将得到补充。

与MQL4的共同点越来越少...