Ошибки, баги, вопросы - страница 3019

 
A100:

Результат: false

И в чем противоречие с этим утверждением?

Переменная инициализирована. Вы, конечно, можете считать string указателем на внутренний класс строки.

 
fxsaber:

Переменная инициализирована. Вы, конечно, можете считать string указателем на внутренний класс строки.

Если инициализирована, то почему тогда при выполнении

void OnStart()
{
    uchar array[];
    const string text = NULL;
    StringToCharArray( text, array );
    Print( GetLastError());
}

возникает ошибка 4009 

ERR_NOTINITIALIZED_STRING

4009

Неинициализированная строка

 
fxsaber:

Даже спорить не буду. Работает правильно.

Пустая строка (NULL) не содержит терминального нуля. По-моему, все там работает логично.


Проблема не в этом, а  в том, что это код возвращает 4, а должен возвращать 0.

Print(StringToCharArray( "ABC", array, 0, 0));
 
A100:

Если инициализирована, то почему тогда при выполнении

возникает ошибка 4009 

ERR_NOTINITIALIZED_STRING

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:

Конечно. Особенно, когда особенность - баг ))

Ну и однозначно добавить в ветку "Особенности языка mql5..."

Немного подправить документацию и уже не баг.

Andrei Trukhanovich:

если по-вашему это логично и правильно, по мне это повод задуматься о логичности вашей логики

Философия далека от практики.

 
Roman:

+1 не нужен, поскольку требуется чистое копирование (без завершающих нулевых символов). Если хотите доказать, что это не баг, то нужны аргументы