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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2007, 05:25   #1
serserser
 
Регистрация: 07.11.2007
Сообщений: 9
Вопрос при пустой ячейке выскакивает "is not a valid floating point value" ПОМОГИТЕ

ЗДРАВТСВУЙТЕ, ПАМАГИТЕ ПЛИЗ ламеру, НЕ могу сдать зачет по Delphi, а я в нем индюк. Есть таблица, в которой вводим факт 1,2,3,4 год. Таблица расчитывает удельный вес по каждому году плюс отклонения.
Если же не ввести в одну из ячеек число (т.е. ячейка будет пустая), то выскакивает ошибка "is not a valid floating point value". Я перерыл много форумов, но так и ничего не нашел..... (или скорей всего не понял, т.к. повторюсь, я индюк). Вот кусочек программы. Заранее Спасибо.

procedure TForm1.BitBtn2Click(Sender: TObject);
var
Value: Double; ch: Currency;
q : Integer;
begin

for i:=1 to StringGrid1.RowCount-2 do
for q:=1 to 8 do If q mod 2 = 1 then form1.StringGrid1.Cells[q,kol+1]:=currToStr(strtocurr(form1.StringG rid1.Cells[q,kol+1])+strtocurr(form1.StringGrid1.Cells[q,i]));
for i:=1 to StringGrid1.RowCount-2 do begin
//1 год удельный вес
StringGrid1.Cells[2,i]:=FloatToStr(100/strtofloat(StringGrid1.Cells[1,kol+1])*strtofloat(StringGrid1.Cells[1,i]));
StringGrid1.Cells[2,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[2,kol+1])+strtofloat(StringGrid1.Cells[2,i]));
//2 год удельный вес
StringGrid1.Cells[4,i]:=FloatToStr(100/strtofloat(StringGrid1.Cells[3,kol+1])*strtofloat(StringGrid1.Cells[3,i]));
StringGrid1.Cells[4,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[4,kol+1])+strtofloat(StringGrid1.Cells[4,i]));
//3 год удельный вес
StringGrid1.Cells[6,i]:=FloatToStr(100/strtofloat(StringGrid1.Cells[5,kol+1])*strtofloat(StringGrid1.Cells[5,i]));
StringGrid1.Cells[6,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[6,kol+1])+strtofloat(StringGrid1.Cells[6,i]));
//3-год удельный вес фактический
StringGrid1.Cells[8,i]:=FloatToStr(100/strtofloat(StringGrid1.Cells[7,kol+1])*strtofloat(StringGrid1.Cells[7,i]));
StringGrid1.Cells[8,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[8,kol+1])+strtofloat(StringGrid1.Cells[8,i]));
//% выполнения плана
StringGrid1.Cells[9,i]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,i])/strtofloat(StringGrid1.Cells[7,i])*100);
StringGrid1.Cells[9,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,kol+1])/strtofloat(StringGrid1.Cells[7,kol+1])*100);
//1-года
StringGrid1.Cells[10,i]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,i])/strtofloat(StringGrid1.Cells[1,i])*100);
StringGrid1.Cells[10,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,kol+1])/strtofloat(StringGrid1.Cells[1,kol+1])*100);
//2-года
StringGrid1.Cells[11,i]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,i])/strtofloat(StringGrid1.Cells[3,i])*100);
StringGrid1.Cells[11,kol+1]:=FloatToStr(strtofloat(StringGrid1 .Cells[5,kol+1])/strtofloat(StringGrid1.Cells[3,kol+1])*100);
end;
for i:=1 to 11 do begin
for j:=1 to kol+1 do begin
if (i mod 2 = 0) or (i=11) or (j=kol+1) or(i=9) then // округление только ячеек, где производится расчет
form1.StringGrid1.Cells[i,j]:= okruglenie(StrTocurr(form1.StringGr id1.Cells[i,j]), 2);
end;
end;
end;
serserser вне форума Ответить с цитированием
Старый 07.11.2007, 07:31   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

он пишет что это не значение с плавающей точко
сделай обработку исключения

или сделай так:

Код:
                                                                                                                                                    

//проверка если ячейкаа пустая
if Length(StringGridl.Cells[i, j]) = 0
//выводим сообщение
then
messagedlg('вы забыли вписать значение в ячейку',mterror,[mbok,mbcancel,0);
end;
Есть кнопка "Правка". SupVis
I like WPF

Последний раз редактировалось SuperVisor; 07.11.2007 в 08:54.
kommunist вне форума Ответить с цитированием
Старый 07.11.2007, 09:25   #3
serserser
 
Регистрация: 07.11.2007
Сообщений: 9
Печаль

Спасибо что откликнулся, влепил messagedlg, выводится нужное сообщение при пустой ячейки, но при нажатии на "OK" или "Cansel" опять вылезает "is not a valid floating point value" , т.е. проблема так и осталась
serserser вне форума Ответить с цитированием
Старый 07.11.2007, 09:49   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Дык.... Проверяем пуста ли ячейка.... пуста, значит вписываем туда ноль.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 07.11.2007, 09:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е. проблема так и осталась
На какой строке?
Учти В ячейки Грида нужно прописывать только строки, приводить их к типу через FloatToStr или IntToStr.

и какого типа у тебя результат функи okruglenie ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2007, 10:00   #6
serserser
 
Регистрация: 07.11.2007
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Карась Посмотреть сообщение
Дык.... Проверяем пуста ли ячейка.... пуста, значит вписываем туда ноль.
и как это сделать?

Цитата:
Сообщение от Stilet Посмотреть сообщение
На какой строке?
Учти В ячейки Грида нужно прописывать только строки, приводить их к типу через FloatToStr или IntToStr.

и какого типа у тебя результат функи okruglenie ?
Из всего сказанного ничего не понял. Сразу объясню... Лекций по Delphi у нас не было (поэтому в Delphi я индюк), препод сразу нагрузил задачей (мол учите сами, т.к. заочники). Саму программу мне подкинули, но она была не доработанная, и поэтому приходится самому ковырятся. Кое что сам разобрал, но вот на этом стопорнул.

Есть кнопка "Правка". SupVis

Последний раз редактировалось SuperVisor; 07.11.2007 в 10:08.
serserser вне форума Ответить с цитированием
Старый 07.11.2007, 10:09   #7
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Код:
if Length(StringGridl.Cells[i, j]) = 0
then
StringGrid1.Cells[i,j]:='0'
end;
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 07.11.2007, 10:25   #8
serserser
 
Регистрация: 07.11.2007
Сообщений: 9
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Код:
if Length(StringGridl.Cells[i, j]) = 0
then
StringGrid1.Cells[i,j]:='0'
end;
После того как вбиваем значения и одну ячейку оставляем пустой, жмем кнопку вычисления (procedure TForm1.BitBtn2Click(Sender: TObject), вылетатет ошибка. Этот кусок кода ничем не помогает.
serserser вне форума Ответить с цитированием
Старый 07.11.2007, 10:59   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от serserser Посмотреть сообщение
После того как вбиваем значения и одну ячейку оставляем пустой, жмем кнопку вычисления (procedure TForm1.BitBtn2Click(Sender: TObject), вылетатет ошибка. Этот кусок кода ничем не помогает.
В какой строке? Текст ошибки?,
Пустая ячейка учавствует в вычислениях?
Alex21 вне форума Ответить с цитированием
Старый 08.11.2007, 06:33   #10
serserser
 
Регистрация: 07.11.2007
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
В какой строке? Текст ошибки?,
Пустая ячейка учавствует в вычислениях?
Не могу сказать в какой строке идет ошибка. все ячейки учавствуют в вычислениях. Если в ячеку поставить 0, то прога все считает норамльно, если же поставить ' ' (пустоту), то прога выдает "is not a valid floating point value". По сути надо что бы при расчете (нажатии кнопки) пустые ячейки автоматом заполнялись нулем.
serserser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Выскакивает "Limit"... Filonenko Свободное общение 11 11.01.2008 11:41
Возникает ошибка Invalid floating point operation Иринкаа Помощь студентам 3 29.11.2007 22:10