Не получается перебор строки
int strLen = edtNumCartridge->Text.Length();
for(int i=1; i<=strLen; i++){
if(edtNumCartridge->Text.SubString(i,1) != "," || i == strLen){
str = str+edtNumCartridge->Text.SubString(i,1);
}else{
Memo1->Lines->Add(str);
str = "";
}
}
Строка должна разбиться, т.е. одна строка в мемо 1, на другой 2 и т.д.
В принципе всё получается, но поледняя цифра не выводится. После последней цифры нет запятой и соответственно от судя по первому моему условию последнюю цифру не выводил.
Я поставил ещё одно условие, чтобы если ещё и дойдет до конца строки, то тоже выведет последние символы, но последняя цифра так и не выводится.
Мне кажется где то я сглупил, понять не могу где. Прошу помощи в данной проблеме.
ещё одну переменную типа ансистринг лень было завести и передать ей исходную строку ? в ансистринг вагон встроенных методов и функций , сильно облегчающие жизнь . )
Что не спросишь всё с давлением встречаете. Если бы я был профи, я бы тут вопросы не задавал, а если уже просьбы о помощи у вас вызывают злобу, то просьба, вымещайте её на чем нибудь другом или просто проходите мимо.
Что не спросишь всё с давлением встречаете. Если бы я был профи, я бы тут вопросы не задавал, а если уже просьбы о помощи у вас вызывают злобу, то просьба, вымещайте её на чем нибудь другом или просто проходите мимо.
Претензии свои можешь маме высказывать. Здесь этого делать не стоит. Во-первых, никто тебе здесь ничем не обязан. Во-вторых - если тебе кажется что с тобой разговаривают как с идиотом - то возможно причина в первую очередь в тебе. Не веди себя как идиот. Ведь это просто.
Что касается твоего вопроса - у класса TStrings, от которого наследуется Lines есть свойство TextDelimeter и т.п. Почему не использовать его? Зачем этот корявый код? Я например не вижу необходимости здесь реализовывать собственную функцию - тем более ТАК.
во вторых , я вам сказал , что сделал бы на вашем месте - глянул бы методы и функции для ансистринг (что по моему вполне очевидно), а не изобретал велосипед .
вы не профи , вы тут ученик . соответственно тон выбран поучающий . я не хочу решать за вас такие задачки . я хочу , что бы вы научились их сами решать .
во вторых , я вам сказал , что сделал бы на вашем месте - глянул бы методы и функции для ансистринг (что по моему вполне очевидно), а не изобретал велосипед .
вы не профи , вы тут ученик . соответственно тон выбран поучающий . я не хочу решать за вас такие задачки . я хочу , что бы вы научились их сами решать .
koderAlex, то что вы посоветовали я учел прочитав сообщение, а такая форма давления как в вашем поучительном сообщение мало кому понравится. Объяснить мои ошибки можно и цивилизованном путёт. Лично я такого рода поучения даже в школе бы воспринял в штыки, мало приятно воспринимать информацию такого рода.
А теперь относительно неидиотов. kot_, если я идиот, то исходя из этого пологаю у тебя вообще синдром дауна и мать мою не вздумай трогать. koderAlex в отличии от тебя выправил ситуацию и судя по сему ты тут админ, раз так уверено раскидываешся оскарблениями. Рыба гниет с головы.
Ошибка в алгоритме - когда i станет равно strLen, edtNumCartridge->Text.SubString(i,1) вернет null или пустую строку, так как обычно в таких методах i - это начальная позиция подстроки.
Попробуйте такой вариант
int strLen = edtNumCartridge->Text.Length();
for(int i=0; i<strLen; i++){
j = 0;
if(edtNumCartridge->Text.SubString(i,1) != ","){
while (edtNumCartridge->Text.SubString(i,1) != "," && i<strLen) {
j++;
i++;
}
str = str+edtNumCartridge->Text.SubString(i,j);
}
if (j != 0){
Memo1->Lines->Add(str);
str = "";
}
}