Автоматическое генерация слова со всеми "версиями" регистра. - страница 2

 
Vladimir Karputov:

StringToCharArray дописывает один лишний символ в массив. 

Само собой, т. к. об этом прямо сказано в документации. К чему этот вопрос?

count=-1

[in]  Количество элементов массива для копирования. Определяет длину результатной строки. По умолчанию -1, что означает копирование до конца массива, либо до встречи терминального 0. Терминальный 0 также будет скопирован в массив-приемник, при этом размер динамического массива может быть увеличен при необходимости под размер строки. Если размер динамического массива больше длины строки, то размер массива уменьшен не будет.

 
Ihor Herasko:

Само собой, т. к. об этом прямо сказано в документации. К чему этот вопрос?

count=-1

[in]  Количество элементов массива для копирования. Определяет длину результатной строки. По умолчанию -1, что означает копирование до конца массива, либо до встречи терминального 0. Терминальный 0 также будет скопирован в массив-приемник, при этом размер динамического массива может быть увеличен при необходимости под размер строки. Если размер динамического массива больше длины строки, то размер массива уменьшен не будет.

Прочтите мой вопрос ДО КОНЦА, а не только первую строку, пожалуйста :)

 
Vladimir Karputov:

Прочтите мой вопрос ДО КОНЦА, а не только первую строку, пожалуйста :)

Читаю:

Последний символ - это "терминальный ноль". Вопрос: он всегда пишется? Или есть нюансы?

Чем он отличается от первой фразы и что неполного в моем ответе?
 
Ihor Herasko:

Тут, как бы, и демонстрировать нечего ))

Так автор просил составить все комбинации строчных и прописных букв. Смотрите результат второго моего примера...
 
e33:
Так автор просил составить все комбинации строчных и прописных букв. Смотрите результат второго моего примера...

Я еще потом другие посты прочитал, в которых указано, для чего это нужно. Так вот: задача решается указанным способом достаточно просто.

 
Vladimir Karputov:

StringToCharArray дописывает один лишний символ в массив. 

Результат: длина слова - 3 символа, а в массив пишется четыре:

Последний символ - это "терминальный ноль". Вопрос: он всегда пишется? Или есть нюансы?

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

#property strict
string Слово="abcd";
void start()
{
   uchar a[];
   int k=StringToCharArray(Слово,a,0,4);
   Alert("k=",k, "   Len=",ArraySize(a), "   ",
    CharToString(a[0])," ",
    CharToString(a[1])," ",
    CharToString(a[2])," ",
    CharToString(a[3]));
}


 
e33:

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


О! А вот это и есть нюансы. Спасибо.

 
Vladimir Karputov:

О! А вот это и есть нюансы. Спасибо.

да, в справке МТ5 нет примера,
а в МТ4 есть)

//--- пример копирования строки str в массив array[] 
StringToCharArray(str,array,0,StringLen(str));
Причина обращения: