Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь с memo в Delphi

Васинкевич Руслан Ученик (245), на голосовании 2 дня назад
Код должен складывать числа по строкам Memo и выводить на Label3
А он мне выдает какое то огромное число (в данном случае сумма должна быть 17)

for i:= 0 to Memo3.Lines.Count - 1 do
begin
k := k + StrToInt(Memo3.Lines[i]);
label3.Caption := IntToStr(k);
end;

Вывод : 1968381
Подсобите , пожалуйста) Уже сделал идентичный блок кода для другого Label и все работает как часы , а тут не хочет
Голосование за лучший ответ
Илья Аганичев Мудрец (13465) 1 месяц назад
в memo точно числа лежат?
label.caption выведите из цикла, не нужно будет begin end ставить
пройдите по шагам и проверьте приращение k,
переменную k перед циклом желательно обнулить
Васинкевич РусланУченик (245) 1 месяц назад
спасибо за ответ
k:= 0;
k := k + StrToInt(Memo3.Lines[0]) + StrToInt(Memo3.Lines[1]);
label3.Caption := IntToStr(k);
вот этот код рабочий , но мне заранее не известно сколько строк в memo , соответственно нужно что-то с циклом думать =)
Илья АганичевМудрец (13465) 1 месяц назад
k:=0;
for i:= 0 to Memo3.Lines.Count - 1 do inc(k,StrToInt(Memo3.Lines[i]));
label3.Caption := IntToStr(k);
Васинкевич РусланУченик (245) 1 месяц назад
не совсем понял почему , но обнуление i :=0 перед циклом решило проблему...
хотя я и не задавал значение i до этого, поэтому думал что оно по стандарту нулю равно... ну да бог с ним
Спасибо за помощь!)
Илья АганичевМудрец (13465) 1 месяц назад
скорее, обнуление k решило проблему
i, как переменная цикла, инициируется в цикле for. К сожалению, дельфийский FOR может идти только с фиксированным инкрементом, но с любого значения

 for i:=14 to 1254 do 
для ранних языков программирования объявленная переменная имеет неопределенное значение. Поэтому, помимо объявления переменной в var секции, перед ее использованием ей желательно присвоить какое-то начальное значение.
Похожие вопросы