错误、漏洞、问题 - 页 3020

 
A100:

如果它是初始化的,那么为什么执行

错误4009

误导性的字符串

4009

未初始化的字符串

这是一个术语的问题。

 
mktr8591:

这不是问题,问题是这段代码返回4,而应该返回0。

这只是意味着-1和0有相同的结果。同样的结果可能会给出INT_MAX 和其他东西。

了解/知道常规功能的一些特点就可以了。
 
fxsaber:


了解/知道常规函数的一些特征是可以的。

当然了。特别是当该功能是一个错误时 ))

好了,毫不含糊地添加到分支" mql5语言的特点..."

 
fxsaber:

它只是意味着-1和0有相同的结果。

如果你认为这是符合逻辑的,正确的,我认为这让你怀疑你的逻辑是否符合逻辑

 
const string text[] = { "ABC", "", "ABC" };    
uchar array[];
    
int start = 0;
int n     = 0;
    
for(int i=0; i < ArraySize(text); i++)
{
   const int count = StringLen(text[i])+1;
   Print(count);
        
   n += StringToCharArray(text[i], array, start, count);
   start += count;
}
    
Print(ArraySize(array), ":", n );
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 4
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 1
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 4
2021.05.24 22:56:35.959 Test (AUDUSD,M5) 9:9
 
mktr8591:

当然了。特别是当该功能是一个错误时 ))

好了,一定要添加到分支"Peculiarities of mql5language..."。

对文档进行一些调整,它就不再是一个错误了。

Andrei Trukhanovich:

如果你认为这是符合逻辑的、正确的,我想这是一个思考你的逻辑的理由。

哲学与实践相去甚远。

 
Roman:

+1是不必要的,因为需要一个干净的拷贝(没有终止的空字符)。如果你想证明这不是一个错误,你需要论据

 
A100:

需要一个干净的副本(没有终止的空字符)。

if (StringLen(text[i]))
  start += StringToCharArray(text[i], array, start, StringLen(text[i]));

这是一个非常有胡子的设计。


WZ

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

const string text[] = { "ABC", "", "ABC" }; 

void OnStart()
{
  ArrayPrint(_R(text).Bytes); // Побайтовое представление массива.
  
  string Str;  
  _W(Str) = text;
  
  ArrayPrint(_R(Str).Bytes); // Побайтовое представление объединенной строки.
}
 
fxsaber:

对文档进行一些调整,它就不再是一个错误了。

哲学与实践相去甚远。

而实践者将如何向理论家解释这样一个矛盾的结果。

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

还是说他们也会纠正一下文件?好吧,毕竟不是为了修复bug!

我的解释很简单:这些标准函数中的一个存在错误--我甚至知道是哪一个

 
A100:

那么实践者如何向理论家解释这样的结果呢?

我的解释很简单:其中一个函数有一个错误--我甚至知道是哪一个。

这个错误是这两个函数之间的差异,而不是它们的结果,因为这只是一个文档问题,当count=0时,应该输出什么。