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

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

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

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

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

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

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

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

Что мне делать??
Elock вне форума Ответить с цитированием
Старый 28.11.2017, 09:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

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


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

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

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

когда я говорил выложить исходники, я имел в виду, что Вы запакуете исходники (это, как минимум *.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, 21:08   #7
Elock
Пользователь
 
Регистрация: 27.11.2017
Сообщений: 15
Радость

Цитата:
Сообщение от 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 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор, работа с файлами Renge Общие вопросы C/C++ 6 06.12.2014 15: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 17:24