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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2013, 18:38   #1
wlll
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 25
По умолчанию Ошибка с типами переменных

Здравствуйте! После нажатия кнопки подсчет вылазит ошибка:
is a not valid floating point value
Код:
Код:
implementation
const size=11;
var A:array [1..size] of integer;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  s:Real;
 i,n:Integer;
begin
n:=Memo1.Lines.Count;
  If n=0 then
    Begin
    MessageBox(handle, PChar('Жодних данних не введено'), PChar('Помилка'),(MB_ICONSTOP+MB_OK));
    Exit;
    End;
  If n>SIZE then
    Begin
     MessageBox(handle, PChar('Кількість елементів перевищує розмір масиву'), PChar('Помилка'),(MB_ICONSTOP+MB_OK));
     end;
    S:=0;
  for i:=1 to 11 do
     begin
    S:=S+StrToFloat(Memo1.Lines[i]);
    end;
    Memo2.Lines.Add('S='+FloatToStr(s));
  end;
wlll вне форума Ответить с цитированием
Старый 12.04.2013, 18:44   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
is a not valid floating point value
где вы тут нашли слова "типы" и "переменные"?
eval вне форума Ответить с цитированием
Старый 12.04.2013, 18:46   #3
wlll
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
где вы тут нашли слова "типы" и "переменные"?
является не действительным значением с плавающей точкой
wlll вне форума Ответить с цитированием
Старый 12.04.2013, 18:58   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Memo1.Lines[i]);
здесь фигня какая-то - или точка вместо запятой, или наоборот, или вообще не подходящее значение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2013, 19:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
S:=S+StrToFloatDef(Memo1.Lines[i],0);
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2013, 19:19   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Тогда уж лучше так
Код:
  c:=Trim(Memo1.Lines[i]);
  if DecimalSeparator='.' then c:=StringReplace(c,',','.')
  else if DecimalSeparator=',' then c:=StringReplace(c,'.',',');
  S:=S+StrToFloatDef(c,0);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2013, 19:24   #7
wlll
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
S:=S+StrToFloatDef(Memo1.Lines[i],0);
не?
Да, точно! Работает!
Вопросик: Что за 0 ? )
и еще ) Ввожу 11 единиц а оно пишет что сумма 10...
Нужно тогда цикл начинать с 0?

Цитата:
Сообщение от Аватар Посмотреть сообщение
Тогда уж лучше так
Код:
  c:=Trim(Memo1.Lines[i]);
  if DecimalSeparator='.' then c:=StringReplace(c,',','.')
  else if DecimalSeparator=',' then c:=StringReplace(c,'.',',');
  S:=S+StrToFloatDef(c,0);
Спасибо! Но первый вариант лучше ( так как здесь для меня тяжело написано... ( Спасибо за помощь

Последний раз редактировалось Stilet; 12.04.2013 в 19:47.
wlll вне форума Ответить с цитированием
Старый 12.04.2013, 19:43   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что за 0 ?
А почему не почитаешь в хелпе описание функции StrToFloatDef() ?
Не ленись.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2013, 19:53   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Тогда уж лучше так
лучше это форматсеттингс, а DecimalSeparator уже давно депрекатед, и место ему в корзине.
eval вне форума Ответить с цитированием
Старый 12.04.2013, 19:53   #10
wlll
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 25
По умолчанию

Почему не удается получить справку по этой программе

Формат справки Windows для этой программы не воспроизводится в Windows 8 и Windows RT. Для получения дополнительных сведений перейдите на веб-сайт поддержки Майкрософт.
wlll вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка с типами dima-intro Общие вопросы C/C++ 2 02.01.2012 17:47
Запутался с типами переменных Snekich Microsoft Office Excel 5 06.12.2011 15:58
Ошибка перевода переменных grafgrial Общие вопросы Delphi 4 10.10.2010 19:58
Ошибка в объявлении переменных Superlotles Помощь студентам 1 17.12.2009 17:05
Ошибка в переменных Maugli-rus Общие вопросы Delphi 2 24.12.2007 07:44