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

 
A100:

Гениально!

Конечно гениально. Справка не раскрывает явно, работу с count 0.
Но если бы вы включили голову, то передавать нулевой размер массива, и выделять ему нулевую память, мягко говоря странно.
По этому на count 0 срабатывает автоматический ресайз до конца строки.
По логике и в StringToShortArray должен срабатывать.
Лучше бы ошибку возвращали, без всяких ресайзов.
 
Roman:
Конечно гениально. Справка не раскрывает явно, работу с count 0.
Но если бы вы включили голову, то передавать нулевой размер массива, и выделять ему нулевую память, мягко говоря странно.
По этому на count 0 срабатывает автоматический ресайз до конца строки.
По логике и в StringToShortArray должен срабатывать.
Лучше бы ошибку возвращали, без всяких ресайзов.

А в

CharArrayToString

почему не до конца?

void OnStart()
{
    const uchar array[] = { 'A', 'B', 'C' };
    const int start = 0, count = 0;
    Print(CharArrayToString( array, start, count ));
}

Результат: ""

 
A100:

А в

почему не до конца?

Результат: ""

Наверно потому, что в CharArrayToString нет [out] динамического массива.
И разработчик решил, что это излишне.
Хотя, разная логика в похожих функциях, вносит больше путаницы.

 
Roman:

Наверно потому, что в CharArrayToString нет [out] динамического массива.
И разработчик решил, что это излишне.

Результирующая строка - это тоже своего рода динамический массив

Roman:

Хотя, разная логика в похожих функциях, вносит больше путаницы.

МегаГениально!

 
A100:

Результирующая строка - это тоже своего рода динамический массив

МегаГениально!

Результирующая строка, формируется в самой функции, и пользователю логика формирования не доступна. 
Это сторона разработчика. Различайте сегменты, где область разработчика, а где область пользователя.
Динамический массив [out], это область пользователя. Динамический массив внутри функции нас не касается, это область разработчика.

Почему разработчик решил не выдавать всю строку на count 0, спросите у него.
Эта автоматизация и имелась ввиду, о схожести логики в похожих функциях.

 
Roman:

Почему разработчик решил не выдавать всю строку на count 0, спросите у него.
Эта автоматизация и имелась ввиду, о схожести логики в похожих функциях.

Извините, но я не настолько туп, чтобы задавать такие вопросы, если ответ есть в Документации ко всем четырем функциям: 

ShortArrayToString  CharArrayToString  StringToShortArray  StringToCharArray 

count - Количество элементов массива для копирования. Определяет длину результатной строки.


Если count = 0, то и копируется 0 элементов (не 1, не 2, не 7, а ноль)

 
A100:

Если count = 0, то и копируется 0 элементов (не 1, не 2, не 7, а ноль)

Вот она гениальность!
Сделал мой день ))

 
Roman:

Вот она гениальность!
Сделал мой день ))

Это не гениальность - это элементарные вещи. Но гении не понимают элементарных вещей - они везде видят "хитрую автоматику", погружаются в области разработчика, знают наперед что и как разработчик решил

 

2940

новая программа не появляется в навигаторе после компиляции.

 
Andrei Trukhanovich:

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

Вторая попытка перевести на личности данную техническую дискуссию.