Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > Delphi > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

Ответ
 
Опции темы
Старый 28.11.2017, 00:32   #1
Elock
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 15
Репутация: 10
По умолчанию Работа на Лазарусе - Калькулятор

У меня вопрос, я вот на этой недели делаю калькулятор. Сделал я всё что нужно для него, но у меня 2 ошибки( ну так скажем ). У меня проблемы именно с кнопкой ..Запятая.. ( . ), она у меня не ограничевается.

Второе у меня то, что 0 при нажание кнопки стиреть по 1 цифры изначальный 0 просто пропадает, а так не должно быть.

Что мне делать??
Elock вне форума   Ответить с цитированием
Старый 28.11.2017, 10:50   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,615
Репутация: 5352
По умолчанию

Цитата:
Сообщение от Elock Посмотреть сообщение
Что мне делать??
я бы добавил в ваш обработчик нажатий клавиш проверку - если после изменений (хоть запятую нажали, хоть цифру, хоть клавишу "стереть 1 цифру"=="backspace") - получается корректное вещественное представление числа, то это изменение пропускать, если нет - отбрасывать данное нажатие, как недопустимое.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 29.11.2017, 14:26   #3
Elock
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 15
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы добавил в ваш обработчик нажатий клавиш проверку - если после изменений (хоть запятую нажали, хоть цифру, хоть клавишу "стереть 1 цифру"=="backspace") - получается корректное вещественное представление числа, то это изменение пропускать, если нет - отбрасывать данное нажатие, как недопустимое.


Можешь подробнее всё объяснить как всё это работает
Elock вне форума   Ответить с цитированием
Старый 29.11.2017, 14:51   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,615
Репутация: 5352
По умолчанию

Цитата:
Сообщение от Elock Посмотреть сообщение
Можешь подробнее всё объяснить как всё это работает
да вроде бы достаточно подробно объяснил.
что именно не понятно?
где код вашего проекта?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 29.11.2017, 17:44   #5
Elock
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 15
Репутация: 10
Печаль

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да вроде бы достаточно подробно объяснил.
что именно не понятно?
где код вашего проекта?
https://imgur.com/a/EqH7V --> Вот мой код, я просто не понимаю, где писать всё это, чтобы сделать эти две операции
Elock вне форума   Ответить с цитированием
Старый 29.11.2017, 18:17   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,615
Репутация: 5352
По умолчанию

когда я говорил выложить исходники, я имел в виду, что Вы запакуете исходники (это, как минимум *.pas *.lfm) файлы в архив и архив прикрепите к сообщению (см. кнопку "Загрузить файлы" - "Управление вложениями")

"лечить" по фотографии - это не комильфо!

но, например, по поводу запятой могу сказать, где править.

у Вас есть процедура ClickBut, которая, судя по всему, назначена всем числовым кнопкам и запятой в том числе.
попробуйте в начале процедуры описать переменную типа string:
Код:

procedure TForm1.ClickBut(Sender: TObject);
var  s : string;
begin

так вот в конце процедуры есть тест:
Цитата:
Код:

Ecran.Text := Ecran.Text + (Sender as TButton).Caption;

его заменить на
Код:

s :=Ecran.Text + (Sender as TButton).Caption;
try
  a := StrToFloat(s);
  Ecran.Text := s;
except
end;

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 29.11.2017, 22:08   #7
Elock
Пользователь
 
Регистрация: 28.11.2017
Сообщений: 15
Репутация: 10
Радость

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
когда я говорил выложить исходники, я имел в виду, что Вы запакуете исходники (это, как минимум *.pas *.lfm) файлы в архив и архив прикрепите к сообщению (см. кнопку "Загрузить файлы" - "Управление вложениями")

"лечить" по фотографии - это не комильфо!

но, например, по поводу запятой могу сказать, где править.

у Вас есть процедура ClickBut, которая, судя по всему, назначена всем числовым кнопкам и запятой в том числе.
попробуйте в начале процедуры описать переменную типа string:
Код:

procedure TForm1.ClickBut(Sender: TObject);
var  s : string;
begin

так вот в конце процедуры есть тест:
его заменить на
Код:

s :=Ecran.Text + (Sender as TButton).Caption;
try
  a := StrToFloat(s);
  Ecran.Text := s;
except
end;

Спасибо за посказку с запятой!
С нулём уже сам разобрался
Спасибо огромное
Elock вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор, работа с файлами Renge Общие вопросы C/C++ 6 06.12.2014 16:24
Калькулятор, работа над ошибками. Artem23 Общие вопросы C/C++ 6 22.12.2012 13:56
задача в лазарусе Invok Помощь студентам 1 14.04.2012 16:37
Ошибочка в лазарусе Invok Помощь студентам 4 12.04.2012 22:05
Проект на лазарусе! makklovskiy Помощь студентам 6 14.01.2010 18:24


08:03.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru