3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
1

Суммирование нескольких edit-ов

21.05.2016, 20:40. Показов 6105. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте, нужна помощь не форме несколько edit - ов, хачу сумировать с помощью массивов или циклами,
в гугле искал но нашел код который суммирует целые числа, а я хочу суммировать дробные.
помогите пожалуйста, спасибо заранее
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2016, 20:40
Ответы с готовыми решениями:

Суммирование значений Edit
Как сложить значения с 1 по 35 Edit? Делаю так, но результат 0. Запутался. var i, i2 :...

Проверка в нескольких Edit
У меня есть код if processExists(Edit1.text) then label3.caption:='Запущен' else ...

Прибавление в нескольких Edit
есть 5 edit'ов и 1 кнопка Button. в 4 edita вводятся числа, а в 5 ответ. Вобщем делаю прибавление ...

Вычисление значений для нескольких Edit
я пока новичёк в программировани, не пинайте сильно, неделя стажа =) вообщем не понятная причина...

24
5774 / 4518 / 1429
Регистрация: 14.04.2014
Сообщений: 20,136
Записей в блоге: 20
21.05.2016, 21:34 2
как люди выживают вообще без способности внятно объяснить, что им нужно?

какие массивы? как они связаны с едитами?

Edit.text - Это строка (string)
чтобы перевести строку в число, используются функции
StrToInt(s) - строку в целое число
StrToFloat(s) - строку в вещественное число
StrToDate(s) - отгадайте с двух попыток
0
30 / 31 / 20
Регистрация: 30.12.2015
Сообщений: 340
21.05.2016, 22:27 3
У вас есть массив Edit-ов, текст которых надо транслировать в значения, а затем просуммировать? если вы программируйте, это должно быть очевидно
Delphi
1
for i := min to max do summ := summ + floatToStr(edit[i]);
где summ - вещ. число; edit[] - массив TEdit; min - минимальный индекс ячейки;
0
5774 / 4518 / 1429
Регистрация: 14.04.2014
Сообщений: 20,136
Записей в блоге: 20
22.05.2016, 10:01 4
FloatToStr заменить на StrToFloat
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
22.05.2016, 20:44  [ТС] 5
проста дайте код под procedure button дальше я сам разберусь только чтоб суммировать дробные числа из нескольких edit - ов спасибо заранее

Добавлено через 17 минут
вот например этот код
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm3.Button1Click(Sender: TObject);
 var
  i, i2 : Integer;
begin
  i2 := 0;
  for i:=16 to 27 do
  if Components[i] is TEdit then Inc(i2, StrToIntDef(TEdit(Components[i]).text, 0));
  edit4.Text:=intToStr(i2);
 end;
только он суммирует целые числа а я хочу дробные

Добавлено через 8 часов 13 минут
неужели я такой трудный вопрос задал я же навичок
0
5774 / 4518 / 1429
Регистрация: 14.04.2014
Сообщений: 20,136
Записей в блоге: 20
22.05.2016, 20:52 6
если ты новичок, читай внимательно, тебе все уже подсказали
функции преобразования между строкой и числом
StrToInt
IntToStr
StrToFloat
FloatToStr

если ты вообще не понимаешь что у тебя написано, я не вижу смысла делать что-либо за тебя
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
22.05.2016, 21:27  [ТС] 7
если хочешь помочь человеку помоги так как он хичет, проста поправ выше написанный код если ни трудна.
я знаю

StrToInt
IntToStr
StrToFloat
FloatToSt

эти коды их полно v internete я пробовал заменить но ...
0
5774 / 4518 / 1429
Регистрация: 14.04.2014
Сообщений: 20,136
Записей в блоге: 20
23.05.2016, 06:35 8
тут никто не верит в ваши "я две недели пробовал"
покажи код
на всякий случай, а то скажешь, что не смог найти в интернете
inc(i,N) <=> i:=i+N; но inc работает только для целых чисел
0
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
23.05.2016, 07:10 9
Цитата Сообщение от Qwetyui Посмотреть сообщение
for i := min to max do summ := summ + floatToStr(edit[i]);
От минимального до максимального Делаем сумма=сумма+ДробноеВСтроку(Эдит(массив - элемент i))
Это никогда не будет работать.

Ответ, для цикла. Упрощенный.
Форма. 3 Edit и одно Memo.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var
summ:double; //Сумма. Дробное число.
i:integer; //Счетчик цикла
begin
summ:=0; //Обнуляем сумму в начале. Можно и не делать, но так принято.
 
//Начало цикла. От 1 до 3 выполняем
for i:=1 to 3 do
begin
summ:=summ+strtofloat(TEdit(Components[i]).Text); //Сумма=сумма+СтрокуВЧисло(Номер эдита)
end;
memo1.lines.Add(floattostr(summ)); //Отобразить значение суммы в поле мемо. Мемо1.Строки.Добавить(ДробноеЧислоВСтроку(сумма))
end;
0
5774 / 4518 / 1429
Регистрация: 14.04.2014
Сообщений: 20,136
Записей в блоге: 20
23.05.2016, 08:13 10
Цитата Сообщение от useruser Посмотреть сообщение
Можно и не делать, но так принято
попробуй не сделать, будешь неприятно удивлен )
0
165 / 89 / 38
Регистрация: 29.06.2015
Сообщений: 1,098
23.05.2016, 08:24 11
Цитата Сообщение от krapotkin Посмотреть сообщение
попробуй не сделать, будешь неприятно удивлен )
Точно. Просто такая инициализация переменной для меня уже стала непривычна. Сишный синтаксис...
(ну и сумма будет непонятной)
PHP
1
2
3
4
5
6
7
8
$a=1
$b=2;
$c=$a+$b; //c=3
 
$a=1
$b=2;
$c='ололо';
$c=$a+$b; //c=3
C#
1
2
3
public static string download_drmp_excel_file_path { get; set; }
.....
download_drmp_excel_file_path = openFileDialog1.FileName;
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
23.05.2016, 14:47  [ТС] 12
useruser, я пробовал ваш код но пишет ошибку " is not a valid floating point value " поле для ввода не пустое,запятую вместо точки пишешь, нет. все равно ошибку выдает

Добавлено через 50 минут
ваш код дабавлает по строчна v memo, a не суммирует

Добавлено через 23 минуты
helpppp

Добавлено через 2 часа 27 минут
я вроде поправил код, оказывается все edit =0 тогда работает код. но работает неправильна при каждом клике на кнопку значимые результата растет, а я хочу проста суммировать и по ходу игнорировать пустые editi пожалуйста помогите plizzzz
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.mTvleliClick(Sender: TObject);
var
summ:double; //Сумма. Дробное число.
i:integer; //Счетчик цикла
begin
summ:=0; //Обнуляем сумму в начале. Можно и не делать, но так принято.
 
//Начало цикла. От 1 до 3 выполняем
for i:=1 to 4 do
begin
summ:=summ+strtofloat(TEdit(Components[i]).Text); 
end;
//memo1.lines.Add(floattostr(summ));
 
edit4.Text:=(floattostr(summ));
end;
вот так переделал
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
23.05.2016, 16:26 13
kobakoba7, для начала научись заключать код дельфи в соответствующие ТЭГИ. когда сообщение печатаешь - там на панели есть кнопка DELPHI
иначе твой код прочитает меньшее количество человек, это совет
Миниатюры
Суммирование нескольких edit-ов  
1
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
23.05.2016, 16:38 14
если число Edit'ов заранее неизвестно, тогда нужно цикл составить
Delphi
1
for i := 0 to ComponentCount-1 do
и проверять i-ый компонент является Tedit? если является и Edit1.Text можно преобразовать во float то суммируй

Добавлено через 30 секунд
Delphi
1
2
3
if (components[i] is TEdit)
and (TryStrToFloat((components[i] as TEdit).Text),a))
then s := s + a;
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
23.05.2016, 21:48  [ТС] 15
AHBAR, не смог скомпилировать код не то что попробовать на работоспособность, ошибку выдает на букву ",а" на запятую, "but received, at line ...
если хочешь помочь дай код под кнопочку.
что касается edit - oв заранее известна, а что касается цикла по моему всё равно понадобится.
edit - ov на форме "mas:array[4..39] of TEdit;" и из этих надо суммировать по отдельности 16..27 и 28..39 .
и чтобы кот мог игнорировать пустые edition.
надеюсь хорошо объяснил.
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
24.05.2016, 10:36 16
kobakoba7, делов то ...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var
mas:array[4..39] of TEdit;
i:Integer;
s:double;
begin
s := 0;
for i := 16 to 27 do
    if mas[i].Text <> '' then s := s + StrToFloat(mas[i].Text);
for i := 28 to 39 do
    if mas[i].Text <> '' then s := s + StrToFloat(mas[i].Text);
 
ShowMessage('S=' + FLoatToStr(s));
end;
Добавлено через 2 минуты
только вначале их задать нужно, то есть сопоставить массив в реальными Edit'ами
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
24.05.2016, 11:44  [ТС] 17
AHBAR,ваш код не работает " access violation at address 00000000 read of address 00000000 , "
я щас погугли может найду причину
потом я переделал код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm3.Button3Click(Sender: TObject);
 var
mas:array[4..39] of TEdit;
i:Integer;
s,a:double;
begin
s := 0;
a := 0;
for i := 4 to 27 do
    if mas[i].Text <> '' then s := s + StrToFloat(mas[i].Text);
for i := 28 to 39 do
    if mas[i].Text <> '' then a := a + StrToFloat(mas[i].Text);
 
//ShowMessage('S=' + FLoatToStr(s));
edit2.Text:=('S=' + FLoatToStr(s));
edit3.Text:=('a=' + FLoatToStr(a));
 
end;
надеюсь правильно переделал.

no vse ravno toje ошибку пишет
0
82 / 82 / 39
Регистрация: 17.02.2016
Сообщений: 464
24.05.2016, 13:14 18
масив mas кто за вас заполнять будет?
0
1077 / 488 / 316
Регистрация: 05.04.2013
Сообщений: 2,140
24.05.2016, 14:45 19
kobakoba7, тут и гуглить особо не надо..
у вас Edit'ы на форме присутствуют? сколько штук и как нумеруются, в смысле какие у них имена?

Добавлено через 31 секунду
по моему тут массив особо и не нужен..
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 301
24.05.2016, 18:49  [ТС] 20
я подумал на вашам замечание, и (открыл) создал совсем новый проект, одно forma 10 edit, просто взял и положил 10 edit, и 1 кнопачку, под button ваш код :

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var
mas:array[1..10] of TEdit;
i:Integer;
s:double;
begin
s := 0;
for i := 1 to 10 do
    if mas[i].Text <> '' then s := s + StrToFloat(mas[i].Text);
//for i := 28 to 39 do
   // if mas[i].Text <> '' then s := s + StrToFloat(mas[i].Text);
ShowMessage('S=' + FLoatToStr(s));
end;
но выдает ту же самую ошибку: " access violation at address 00000000 read of address 00000000 , "
00000000 - иногда меняется -> на числа и буквы.
0
24.05.2016, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2016, 18:49
Помогаю со студенческими работами здесь

Сравнение данных в нескольких полях Edit
Добрый день! Есть три поля Edit1, Edit2, Edit3. В Edit1 вводятся блоки из 0 и 1 по одному. А в ...

Обработка нескольких Edit + шаблон Excel
Добрый день, коллеги. Подскажите, пожалуйста, как сделать цикл, обрабатывающий все Edit находящиеся...

Запись в текстовый файл текста с нескольких Edit
Помогите, пожалуйста! Есть форма Как сделать так что бы при нажатии на кнопку добавить программа...

Сохранение в файл из нескольких Edit-ов и заполнение их из файла
Приветствую нужна помощ решить две ситуации 1) имеется куча edit`ов (скрин прилагается), надо...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru