Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В чем ошибка? (Калькулятор) 
V
    Опции темы
nonstop1
Дата 17.9.2011, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Код

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,wynik: real;
begin
begin
a:=strtofloat (edit1.text);
b:=strtofloat (edit2.text);
c:=strtofloat  (edit3.text);
 
 
if plus.Checked then
wynik:= a+b+c;
edit4.Text:= floattostr (wynik);
 
 
if minus.Checked then
wynik:=a-b-c;
edit4.Text:=floattostr (wynik);
 
if razy.Checked then
wynik:= a*b*c;
edit4.Text:=floattostr (wynik);
 
if podzielic.Checked then
begin
if  (b=0) or (c=0) then
edit4.Text:=' ';
showmessage ('Ошибка!!!');
end
else
begin
wynik:=a/b/c;
edit4.Text:=floattostr (wynik);
 end;
end;
     end;
 
 
 
 
 
 begin
if (edit1.text = ' ') or (edit2.text = ' ') or (edit3.text=' ') then
edit4.Text:= ' ';
showmessage ('Ошибка');
   end;
 
 
begin
 if (plus.Checked=false) and (minus.Checked= false) and (razy.Checked = false) and (podzielic.Checked=false) then
  edit4.Text:=' ';
 showmessage ('Ошибка');
 end;
 
 
 
 end;
enD;



M
bems
Кнопка КОД справа над формой быстрого ответа


Это сообщение отредактировал(а) bems - 17.9.2011, 22:08
PM   Вверх
Данкинг
Дата 17.9.2011, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А в чём ошибка?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 17.9.2011, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Я уже как хочешь пробовала, либо вообще не работает либо работает , но сообщение об ошибке выскакивает всегда, а не когда нужно
PM   Вверх
Данкинг
Дата 17.9.2011, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(nonstop1 @  17.9.2011,  22:13 Найти цитируемый пост)
Я уже как хочешь пробовала

Да я-то много как хочу, только попробовать не всегда возможно. smile smile smile 

Я бы советовал не забывать begin...end в местах сообщений об ошибке:
Код

if (edit1.text = ' ') or (edit2.text = ' ') or (edit3.text=' ') then
 begin 
  edit4.Text:= ' ';
  showmessage ('Ошибка');
  end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 18.9.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Все равно не работает.Там по ходу во всей программе не правильно begin...end стоятsmile 
PM   Вверх
Данкинг
Дата 18.9.2011, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(nonstop1 @  18.9.2011,  13:25 Найти цитируемый пост)
Все равно не работает.

В каком именно месте кода не работает?
Цитата(nonstop1 @  18.9.2011,  13:25 Найти цитируемый пост)
Там по ходу во всей программе не правильно begin...end стоят

Поставь правильно.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Данкинг
Дата 18.9.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Кстати, почему именно
Код

edit4.Text:= '  '

??? Там точно пробел должен искаться?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 18.9.2011, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Код

edit4.Text:=  ' '


Ну нужно, что бы если хоть одно поле пустое, то появлялось сообщение об ошибке. Ну там все правильно, вот только эти begin -end не совсем правильно стоят. 



В принципе все работает, только не совсем правильно потому что сообщение появляется все время, а не когда нужно

Это сообщение отредактировал(а) nonstop1 - 18.9.2011, 16:06
PM   Вверх
Данкинг
Дата 18.9.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(nonstop1 @  18.9.2011,  16:59 Найти цитируемый пост)
Ну нужно, что бы если хоть одно поле пустое, то появлялось сообщение об ошибке.

Я обычно для верности пишу
Код

 if length(trim(edit4.Text))=0 then

Цитата(nonstop1 @  18.9.2011,  16:59 Найти цитируемый пост)
потому что сообщение появляется все время, а не когда нужно

 Везде расставлены begin...end по моему образцу?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 18.9.2011, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Код

var
a,b,c,wynik: real;
begin
a:=strtofloat (edit1.text);
b:=strtofloat (edit2.text);
c:=strtofloat  (edit3.text);

if plus.Checked then
begin
wynik:= a+b+c;
edit4.Text:= floattostr (wynik);
end; 

if minus.Checked then
begin
wynik:=a-b-c;
edit4.Text:=floattostr (wynik);
end;

if razy.Checked then
begin
wynik:= a*b*c;
edit4.Text:=floattostr (wynik);
end;
 
if podzielic.Checked then
begin
if  (b=0) or (c=0) then
edit4.Text:=' ';
showmessage ('Ошибка!!!');
end
else
begin
wynik:=a/b/c;
edit4.Text:=floattostr (wynik);
end;




if (edit1.text = ' ') or (edit2.text = ' ') or (edit3.text=' ') then
begin
edit4.Text:= ' ';
showmessage ('Ошибка');
end;

 if (plus.Checked=false) and (minus.Checked= false) and (razy.Checked = false) and (podzielic.Checked=false) then
begin
  edit4.Text:=' ';
 showmessage ('Ошибка');
end;

end;

  end.


 Изменила, но все равно... теперь неправильно считает

Это сообщение отредактировал(а) nonstop1 - 18.9.2011, 18:33
PM   Вверх
nonstop1
Дата 18.9.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



И еще когда должно появляться сообщение об ошибке, появляется это _ http://s2.ipicture.ru/uploads/20110918/qRUZ6OdG.bmp
PM   Вверх
Данкинг
Дата 18.9.2011, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(nonstop1 @  18.9.2011,  19:17 Найти цитируемый пост)
 Изменила

Только в одном месте? Я имел в виду, что изменить во всём коде надо.
Цитата(nonstop1 @  18.9.2011,  19:17 Найти цитируемый пост)
теперь неправильно считает

Сообщения об ошибках тут явно ни при чём.
Цитата(nonstop1 @  18.9.2011,  19:38 Найти цитируемый пост)
И еще когда должно появляться сообщение об ошибке, появляется это 

А тут-то что непонятно? Смотри, что содержится в переменных, которые передаются функции FloatToStr.





--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 18.9.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Цитата

А тут-то что непонятно? Смотри, что содержится в переменных, которые передаются функции FloatToStr.


результат там содержится и в чем тогда проблема?
PM   Вверх
Данкинг
Дата 18.9.2011, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(nonstop1 @  18.9.2011,  21:20 Найти цитируемый пост)
результат там содержится и в чем тогда проблема? 

Например?

Добавлено @ 20:31
Ещё есть такая штука, как DecimalSeparator.

Это сообщение отредактировал(а) Данкинг - 18.9.2011, 20:31


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
nonstop1
Дата 18.9.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 17.9.2011

Репутация: нет
Всего: нет



Цитата(Данкинг @ 18.9.2011,  20:29)


Добавлено @ 20:31
Ещё есть такая штука, как DecimalSeparator.

 Я конечно сама уже начинаю слышать как тормозит мой мозг smile  Но я не знаю что это за ШТУКА

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.