Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116

Работа с полем Edit

10.11.2013, 16:10. Показов 5352. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! есть такой код кнопки на форме:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button15Click(TObject *Sender)
{
int s1=0;
for(int i=0; i<=Edit5->Text.Length()-1 ;i++)
{
String x = Edit5->Text;
Edit5->Text = x[Edit5->Text.Length()-1];
s1+=StrToInt(Edit5->Text[i]);
}
Edit5->Text=IntToStr(s1);
}
по идее я хотел чтобы я ввел какие то числа в поле Едит5, а после нажатия кнопки сумма введенных чисел вывелась в тот же Edit5. но не работает. помогите, пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2013, 16:10
Ответы с готовыми решениями:

Как свойство Caption задать полем ввода Edit?
Как создать приложение с кнопкой, у которой свойство Caption задается полем ввода Edit, и двумя компонентами SpinEdit, изменяющими...

Работа с полем Memo - получение подстрок
Здравствуйте, подскажите пожалуйста как из Memo1-&gt;Lines-&gt;Add(&quot;-3,2&quot;); отдельно в две разные переменные вытащить -3 и 2??? Добавлено...

Работа с Edit
Есть ли способ заменить Edit1, Edit2...Editn переменной, что б в цикле можно было менять его номер?

18
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.11.2013, 16:15
Цитата Сообщение от Shef4u Посмотреть сообщение
я ввел какие то числа в поле Едит5
Вероятно, не числа, а цифры?
То есть для "1234" вывело "10" ?
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 16:18  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Вероятно, не числа, а цифры?
То есть для "1234" вывело "10" ?
ну например ввожу 999, оно стирает их оставляя только одну девятку и пишет ошибку Range Check Error. для 1234 вывело 3 с той же ошибкой, хотя по идее должна была появится 10-ка
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.11.2013, 16:22
Возможно, что как-то так. В билдере давно не писал.
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button15Click(TObject *Sender)
{
   int s1=0;
   String x = Edit5->Text;
   for(int i=0; i< x.Length(); i++)
   { 
      s1+= x[i] - '0';
   }
   Edit5->Text=IntToStr(s1);
}
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 16:31  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Возможно, что как-то так. В билдере давно не писал.
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button15Click(TObject *Sender)
{
   int s1=0;
   String x = Edit5->Text;
   for(int i=0; i< x.Length(); i++)
   { 
      s1+= x[i] - '0';
   }
   Edit5->Text=IntToStr(s1);
}
спасибо, но все та же ошибка. Но когда пишу в цикле x.Length()-2 и ввожу в Едит только одно число к примеру единицу то ошибки нет, но выводит 0, хотя должно же бы 0+1=1 вывести
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 16:42
Может так?
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button15Click(TObject *Sender)
{
    int s1 = 0;
    String x = Edit5->Text;
    for (int i = 0; i <= Edit5->Text.Length() - 1; i++)
    {
        s1 += StrToInt(Edit5->Text[i]);
    }
    Edit5->Text = IntToStr(s1);
}
Просто лень щас форму создавать))
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.11.2013, 16:44
Цитата Сообщение от Shef4u Посмотреть сообщение
Но когда пишу в цикле x.Length()-2
Тогда просто в цикл не попадаете вовсе.
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 16:46  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
Может так?
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button15Click(TObject *Sender)
{
    int s1 = 0;
    String x = Edit5->Text;
    for (int i = 0; i <= Edit5->Text.Length() - 1; i++)
    {
        s1 += StrToInt(Edit5->Text[i]);
    }
    Edit5->Text = IntToStr(s1);
}
Просто лень щас форму создавать))
тоже уже так пробовал. то же самое - выводит ноль. главное что когда ставлю еще одну кнопку
void __fastcall TForm1::Button16Click(TObject *Sender)
{
Edit6->Text=Edit5->Text.Length();
}
то в Едит6 длину Едит5 выводит верно! введу 2 символа - пишет 2. введу 3 - пишет 3. где тогда ошибка не могу понять
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 16:49
Я немог запутался, Вам надо вывести суму цифр или количество?
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 16:52  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
Я немог запутался, Вам надо вывести суму цифр или количество?
сумму цифр. уже сделал. спасибо. надо было так цикл задать
for(int i=Edit5->Text.Length(); i!=0; i--)
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 16:59
Цитата Сообщение от Shef4u Посмотреть сообщение
сумму цифр. уже сделал. спасибо. надо было так цикл задать
for(int i=Edit5->Text.Length(); i!=0; i--)
Моя тоже должна была работать, просто я на Visual Studio работаю, может на билдере что то не так делается.

Добавлено через 4 минуты
Цитата Сообщение от riki34 Посмотреть сообщение
Моя тоже должна была работать, просто я на Visual Studio работаю, может на билдере что то не так делается.
А хотя если массив начинается не с 0 а с 1 тогда надо было так
C++
1
for (int i = 1; i <= Edit5->Text.Length(); i++)
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 17:16  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
Моя тоже должна была работать, просто я на Visual Studio работаю, может на билдере что то не так делается.
я в Embarcadero RAD Studio. теперь проблема другая. пользователь вводит в Едит5 к примеру 10+11. надо взять число до знака '+' (т.е. 10) и после (т.е 11) и их сложить
p.S:
for (int i = 1; i <= Edit5->Text.Length(); i++) работает тоже )

Добавлено через 14 минут
если делать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button15Click(TObject *Sender)
{
int s1=0;
for(int i=1; i<= Edit5->Text.Length(); i++)
{
do
{
    s1+=StrToInt(Edit5->Text[i]);
}
while (Edit5->Text[i] != '+');
}
Edit5->Text=IntToStr(s1);
}
после нажатия на кнопку программа зависает
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 17:39
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int s1 = 0;
String a = "";
String b = "";
int i = 1;
while (Edit5->Text[i] != '+') 
{
     a += Edit5->Text[i];
     i++;
}    
while (i <= Edit5->Text.Length())
{
     b += Edit5->Text[i];
     i++;
}
s1 = StrToInt(a) + StrToInt(b);
textBox1->Text = IntToStr(s1);
Вроде так

Добавлено через 7 минут
забыл i++; вставить между 9 и 10 строчками
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 17:47  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int s1 = 0;
String a = "";
String b = "";
int i = 1;
while (Edit5->Text[i] != '+') 
{
     a += Edit5->Text[i];
     i++;
}    
while (i <= Edit5->Text.Length())
{
     b += Edit5->Text[i];
     i++;
}
s1 = StrToInt(a) + StrToInt(b);
textBox1->Text = IntToStr(s1);
Вроде так

Добавлено через 7 минут
забыл i++; вставить между 9 и 10 строчками
у меня нет TextBox'а
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 17:59
вместо textBox1 ставим Edit5
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 19:09  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
вместо textBox1 ставим Edit5
а во втором цикле я так понимаю ми идем с конца и до того как встретим '+' значит не должно ли там быть
while (i <= Edit5->Text.Length()) условие завершения цикла то что i == '+' ?
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 19:13
нет мы идём после + до конца
0
15 / 15 / 4
Регистрация: 31.10.2011
Сообщений: 116
10.11.2013, 19:24  [ТС]
Цитата Сообщение от riki34 Посмотреть сообщение
нет мы идём после + до конца
работает, спасибо. но не совсем понимаю как во втором цикле так вышло что мы после + идем в конец. цикл же стартует снова от единицы, так как счетчик i const и равен 1.
0
2 / 2 / 2
Регистрация: 10.11.2013
Сообщений: 24
10.11.2013, 20:24
i это не константа. Константу нельзя менять во время выполнения программы.
Пример 10+15:
В первом цикле:
1. Edit->Text[1] = "1", i++
2. Edit->Text[2] = "0", i++
После цикла:
1. Edit->Text[3] = "+", i++
Второй цикл:
1. Edit->Text[4] = "1", i++
2. Edit->Text[5] = "5", i++
После второго цикла
a[1] = "1", a[2] = "0", a[3] = '\0'
b[1] = "1", b[2] = "5", b[3] = '\0'
1. s1 = StrToInt("1","0") + StrToInt("1","5")
s1 = 25
2. Edit->Text = IntToStr(25)
Edit->Text[1] = "2"
Edit->Text[2] = "5"
Думаю достаточно понятно выразился. Если помог не забываем ставить спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2013, 20:24
Помогаю со студенческими работами здесь

Работа с Edit
Здравствуйте. Подскажите, вот на скрине есть несколько Edit Как сделать что бы там где &quot;Прізвище&quot; наприер можна было вводить...

работа с Edit
Подскажите как из поля Edit считать данные с разделителями в виде &quot;:&quot; в формате int в массив.

Работа с Edit и Label
Помогите пожалуйста, задача такая: Есть форма, есть 5 Edit и 1 label, кнопок нет. При вводе в любой Edit данные должны автоматом...

Работа с символами из строки Edit
Не хватает теории; поэтому парадоксы... Задача: в поле Edit1 вводится до 11 символов (любых). Требуется их &quot;поштучно&quot;...

Ограничение ввода русских букв в Edit. Всплывающая подсказка над Edit'ом
Добрый день, обращаюсь за помощью по следующим двум вопросам. 1) В Edit нужно чтобы вводились только буквы англ. и рус. void __fastcall...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru