Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Jimhucksly
Статус: 5-й класс
Рейтинг: 739
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 686
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 487
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Номер выпуска:1439
Дата выхода:02.10.2009, 16:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:575 / 206
Вопросов / ответов:1 / 1

Вопрос № 172696: Добрый день уважаемые эксперты! Помогите пожалуйста в создании калькулятоа и конвертера валюты! вот критерии: Создать калькулятор с конвертером валют, позволяющий производить математ...



Вопрос № 172696:

Добрый день уважаемые эксперты!
Помогите пожалуйста в создании калькулятоа и конвертера валюты!
вот критерии:
Создать калькулятор с конвертером валют, позволяющий производить математические операции валютами и переводить деньги из одной валюты в другую, учитывая различные курсы валют.
Организовать фиксированный ввод информации в поля.
Создать обработчик ошибок, который бы позволял перехватывать ошибки при неправильном вводе информации в поля и выдовал бы сообщения об этих ошибках.
и можно небольшие объяснения рядом с процедурами!
Заранее огромное спасибо ВАМ!

Отправлен: 27.09.2009, 15:38
Вопрос задал: Андреев Дмитрий Фёдорович, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Студент :
Здравствуйте, Андреев Дмитрий Фёдорович.
Когда то я уже делал подобное вот посмотрите:
Код:
unit Calcul2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Mask, Buttons;

type
TCalculator2 = class(TForm)
Edit1: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
BitBtn10: TBitBtn;
BitBtn11: TBitBtn;
BitBtn12: TBitBtn;
BitBtn13: TBitBtn;
BitBtn14: TBitBtn;
BitBtn15: TBitBtn;
BitBtn16: TBitBtn;
BitBtn17: TBitBtn;
BitBtn18: TBitBtn;
BitBtn19: TBitBtn;
BitBtn20: TBitBtn;
BitBtn21: TBitBtn;
BitBtn22: TBitBtn;
BitBtn23: TBitBtn;
BitBtn24: TBitBtn;
BitBtn25: TBitBtn;
BitBtn26: TBitBtn;
BitBtn27: TBitBtn;
BitBtn28: TBitBtn;
Edit2: TEdit;
Edit3: TEdit;
BitBtn29: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit4: TEdit;
BitBtn30: TBitBtn;
procedure BitBtn18Click(Sender: TObject);
procedure BitBtn14Click(Sender: TObject);
procedure BitBtn10Click(Sender: TObject);
procedure BitBtn19Click(Sender: TObject);
procedure BitBtn15Click(Sender: TObject);
procedure BitBtn11Click(Sender: TObject);
procedure BitBtn20Click(Sender: TObject);
procedure BitBtn16Click(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
procedure BitBtn17Click(Sender: TObject);
procedure BitBtn13Click(S ender: TObject);
procedure BitBtn9Click(Sender: TObject);
procedure BitBtn21Click(Sender: TObject);
procedure BitBtn23Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn22Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn24Click(Sender: TObject);
procedure BitBtn25Click(Sender: TObject);
procedure BitBtn26Click(Sender: TObject);
procedure BitBtn27Click(Sender: TObject);
procedure BitBtn28Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn29Click(Sender: TObject);
procedure BitBtn30Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } A,B,C,D:real;F:Byte;St,Sst:String;
public
{ Public declarations }
end;

var
Calculator2: TCalculator2;

implementation

{$R *.dfm}

procedure TCalculator2.FormCreate(Sender: TObject);
begin
Edit1.Text:='0';
D:=0;A:=0;B:=0;C:=0;F:=0;
end;

procedure TCalculator2.FormActivate(Sender: TObject);
begin
Edit1.SetFocus;
end;

procedure TCalculator2.BitBtn18Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(1);
end;

procedure TCalculator2.BitBtn14Click(Sender: TOb ject);
begin
Edit1.SelText:=FloatToStr(2);
end;

procedure TCalculator2.BitBtn10Click(Sender: TObject);
begin
Edit1 SelText:=FloatToStr(3);
end;

procedure TCalculator2.BitBtn19Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(4);
end;

procedure TCalculator2.BitBtn15Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(5);
end;

procedure TCalculator2.BitBtn11Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(6);
end;

procedure TCalculator2.BitBtn20Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(7);
end;

procedure TCalculator2.BitBtn16Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(8);
end;

procedure TCalculator2.BitBtn12Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(9);
end;

procedure TCalculator2.BitBtn17Click(Sender: TObject);
begin
Edit1.SelText:=FloatToStr(0);
end;

procedure TCalculator2.BitBtn13Click(Sender: TObject);
begin
Edit1.SelText:=chr(44);
end;

procedure TCalculator2.BitBtn9Click(Sender: TObject);
begin
St:=EDit1.Text;
Sst:=#45;
Insert(Sst,St,0);
Edit1.Text:=St;
end;

procedure TCalculator2.BitBtn21Click(Sender: TObject);
begin
Edit1.Text:='0';A:=0;B:=0;C:=0;F:=0;
Edit1.SelectAll;
Edit1.SetFocus;
end;

procedure TCalculator2.BitBtn23Click(Sender: TObject);
var
q:integer;
St:String;
begin
St:=EDit1.Text;
q:=Length(Edit1.Text);
Delete(St,q,1);
Edit1.Text:=St;
end;

procedure TCalculator2.BitBtn5Click(Sender: TObject);
begin
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=1;
Edit1.SetFocus; exit;
end else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1. Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=1;
end;
end;

procedure TCalculator2.BitBtn1Click(Sender: TObject);
begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=0;
end;

procedure TCalculator2.BitBtn22Click(Sender: TObject);
begin
Edit1.Text:='0';
Edit1.SelectAll;
Edit1.SetFocus;
end;

procedure TCalculator2.BitBtn6Click(Sender: TObject);
begin
if F=0 then begin
try
A:= StrToFloat(Edit1.Text); except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=2;
Edit1.SetFocus;exit;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=2;
end;
end;

procedure TCalculator2.BitBtn7Click(Sender: TObject);
begin
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=3;
Edit1.Setfocus;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit 1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:=& #39;На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=3;
end;
end;

procedure TCalculator2.BitBtn8Click(Sender: TObject);
begin
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=4;
Edit1.SetFocus;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=4;
end;
end;

procedure TCalculator2.BitBtn4Click(Sender: TObject);
be gin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
if A<0 then begin Edit1.Text:='Невозможно вычислить';Exit;end else C:=sqrt(A);
Edit1.Text:=FloatToStr(C);
Edit1.Setfocus;
end;

procedure TCalculator2.BitBtn30Click(Sender: TObject);
begin
Edit3.Text:= FloatToStr(StrToFloat(Edit4.Text) / StrToFloat(Edit2.Text));
end;

procedure TCalculator2.BitBtn3Click(Sender: TObject);
begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=5;
Edit1.Setfocus;
end;

procedure TCalculator2.BitBtn2Click(Sender: TObject);
begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Exit;
Edit1.SelectAll;
end;
if A=0 then begin Edit1.Text:='На ноль делить нельзя';Exit; end else C: =1/A;
Edit1.Text:=FloatToStr(C);
Edit1.Setfocus;
end;

procedure TCalculator2.BitBtn24Click(Sender: TObject);
begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
D:=D+A;
Edit1.Setfocus;
end;

procedure TCalculator2.BitBtn25Click(Sender: TObject);
begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
D:=D-A;
Edit1.Setfocus;
end;

procedure TCalculator2.BitBtn26Click(Sender: TObject);
begin
Edit1.Text:=FloatToStr(D);
end;

procedure TCalculator2.BitBtn27Click(Sender: TObject);
begin
D:=0;
end;

procedure TCalculator2.BitBtn28Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TCalculator2.BitBtn29Click(Sender: TObject);
begin
Edit4.Text:= FloatToStr(StrToFloat(Edit2.Text) * StrToFloat(Edit3.Text));
end;

procedure TCalculator2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44:;// клавиша ,
#43:begin Key:=chr(0);
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=1;
Edit1.Setfocus;
Edit1.SelectAll;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=1;
end;
end;
#13:begin Key:=chr(0);
try
B:=St rToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1 : C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
Edit1.Text:=FloatToStr(C);
Edit1.SetFocus;
Edit1.SelectAll;
F:=0;
end;
#45:begin Key:=chr(0);
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=2;
Edit1.Setfocus;
Edit1.SelectAll;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=2;
end;
end;
#42: begin Key:=chr(0);
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=3;
Edit1.Setfocus;
Edit1.SelectAll;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=3;
end;
end;
#47:begin Key:=chr(0);
if F=0 then begin
try
A:= StrToFloat(Edit1.Text);
except ShowMessage('Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
F:=4;
Edit1.Setfocus;
Edit1.SelectAll;
end
else begin
try
B:=StrToFloat(Edit1.Text);
except ShowMessage( 'Ошибка ввода числа');
Edit1.SelectAll;
Exit;
end;
case F of
1: C:=A+B;
2: C:=A-B;
3: C:=A*B;
4: if B=0 then begin Edit1.Text:='На ноль делить запрещено'; Exit; end else C:=A/B;
5: C:=(B/100)*A;
end;
A:=C;
Edit1.Text:=FloatToStr(C);
Edit1.SelectAll;
Edit1.SetFocus;
F:=4;
end;
end;
// остальные символы — запрещены
else Key :=Chr(0); // символ не отображать
end;
end;

procedure TCalculator2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44 : ; // клавиша ,
// остальные символы — запрещены
else Key :=Chr(0); // символ не отображать
end;
end;

procedure TCalculator2.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44 : ; // клавиша ,
// остальные символы — запрещены
else Key :=Chr(0); // символ не отображать
end;
end;

procedure TCalculator2.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9': ; // цифра
#8 : ; // клавиша <Back Space>
#44 : ; // клавиша ,
// остальные символы — запрещены
else Key :=Chr(0); // символ не отображать
end;
end;

procedure TCalculator2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
application.Terminate;
end;

end.
Разобраться в программе не составляет труда, сам калькулятор работает так же, как и стандартный калькулятор Майкрософта. Прикрепленный файл: загрузить »

-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Студент
Ответ отправлен: 27.09.2009, 19:57

Оценка ответа: 5
Комментарий к оценке:
отлично!!!!!

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254771 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.9 от 25.09.2009

    В избранное