Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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
Сообщений: 23,906
Репутация: 5228
По умолчанию

Цитата:
Сообщение от 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
Сообщений: 23,906
Репутация: 5228
По умолчанию

Цитата:
Сообщение от 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
Сообщений: 23,906
Репутация: 5228
По умолчанию

когда я говорил выложить исходники, я имел в виду, что Вы запакуете исходники (это, как минимум *.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


21:20.


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

RusProfile.ru


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