Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2012, 22:14   #1
_Oleg
 
Регистрация: 26.12.2012
Сообщений: 3
По умолчанию Подсчёт в стринггриде если заполнены только первые n столбцов

Здравствуйте! Вообщем есть таблица (2 строки на 10 столбцов, не считая заголовочных). В ячейки вводятся вещественные числа для осуществления дальнейших расчётов. Помогите, пожалуйста, сделать такой цикл чтобы выполнялся расчёт если заполнены только первые n столбцов, а остальные пустые. Для полной таблицы цикл работает, а вот если не все столбцы заполнены - не могу сообразить.
_Oleg вне форума Ответить с цитированием
Старый 26.12.2012, 22:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не совсем понятно, что у Вас не получается...
Вы не можете определить, какой столбец является последним заполненным?
Если у Вас n столбцов заполнено, так и делайте цикл ДО n.
Не понятно, что с чем проблема...

Может быть, Вы свой вопрос примером своего кода проиллюстрируете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.12.2012, 17:29   #3
_Oleg
 
Регистрация: 26.12.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не совсем понятно, что у Вас не получается...
Вы не можете определить, какой столбец является последним заполненным?
Если у Вас n столбцов заполнено, так и делайте цикл ДО n.
Не понятно, что с чем проблема...

Может быть, Вы свой вопрос примером своего кода проиллюстрируете?
Дак я хочу сделать так чтобы программа считала в случае если пользователь заполнил не всю таблицу а только первые n столбцов. Моя программа выводит сообщение такого вида если таблица заполнена не до конца (типа нет чисел):

is not a valid floating point value

Я хочу чтобы этого не было и чтоб прога спокойно считала если заполнены только первые n столбцов. Приведу фрагмент кода проги, где берутся значения из стриггрида и вычисляется мат. ожидание и дисперсия:

PHP код:
        for i:=1 to 10 do

          
begin
           
//вычисление мат. ожидания X1
           
Endcout:=FloatToStr(
           
StrToFloat(StringGrid1.Cells[i,1])*
           
StrToFloat(StringGrid1.Cells[i,2]));
           
Mx:=Mx+StrToFloat(Endcout);
           
StringGrid3.Cells[1,1]:=FloatToStr(Mx); //заносим результат в ячейку др. таблицы

           //вычисление дисперсии X1
           
Endcout2:=FloatToStr(Sqr(
           
StrToFloat(StringGrid1.Cells[i,1]))*
           
StrToFloat(StringGrid1.Cells[i,2]));
           
Dx:=Dx+StrToFloat(Endcout2);
           
StringGrid3.Cells[2,1]:=FloatToStr(Dx-sqr(Mx));
        
end
Ладно, сформулирую вопрос по-другому. Как сделать так чтобы прога сама определяла, какой столбец является последним заполненным и выполняла расчёты согласно моему коду?

Последний раз редактировалось _Oleg; 27.12.2012 в 17:31.
_Oleg вне форума Ответить с цитированием
Старый 27.12.2012, 17:44   #4
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от _Oleg Посмотреть сообщение
Ладно, сформулирую вопрос по-другому. Как сделать так чтобы прога сама определяла, какой столбец является последним заполненным и выполняла расчёты согласно моему коду?
Попробуй в цикл пред виполнением действий поставить проверку
Код:
  if SringGrid1.Cels[i,1]='' then break;
DrBAXA вне форума Ответить с цитированием
Старый 27.12.2012, 18:03   #5
_Oleg
 
Регистрация: 26.12.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от DrBAXA Посмотреть сообщение
Попробуй в цикл пред виполнением действий поставить проверку
Код:
  if SringGrid1.Cels[i,1]='' then break;
Не выходит. Что с полной или неполной таблицей при запуске подсчётов прога выдаёт ту же ошибку что я написал в моем предыдущем посте. Я сделел так как вы сказали:

Код:
 for i:=1 to 10 do

    if StringGrid1.Cells[i,1]='' then break;

          begin
           //вычисление мат. ожидания X1
           Endcout:=FloatToStr(
           StrToFloat(StringGrid1.Cells[i,1])*
           StrToFloat(StringGrid1.Cells[i,2]));
           Mx:=Mx+StrToFloat(Endcout);
           StringGrid3.Cells[1,1]:=FloatToStr(Mx); //заносим результат в ячейку др. таблицы

           //вычисление дисперсии X1
           Endcout2:=FloatToStr(Sqr(
           StrToFloat(StringGrid1.Cells[i,1]))*
           StrToFloat(StringGrid1.Cells[i,2]));
           Dx:=Dx+StrToFloat(Endcout2);
           StringGrid3.Cells[2,1]:=FloatToStr(Dx-sqr(Mx));
        end;

Последний раз редактировалось _Oleg; 27.12.2012 в 18:26.
_Oleg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция ЕСЛИ подходит только для 1 условия, а если условий больше? Slavatron1984 Microsoft Office Excel 2 08.01.2012 22:07
VBA вывести сообщение если ячейки не заполнены johny_03 Microsoft Office Excel 2 21.09.2011 22:40
Подсчёт из двух столбцов по условию oleg_sh Microsoft Office Excel 2 28.04.2010 18:49