![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите найти ошибку в коде:
Код:
procedure TForm2_new_schet.But_perevodClick(Sender: TObject);
var dol,evro,sum,rez,dol_pr,evro_pr:single;
begin
dol:=StrToFloat(Edit_kurs_dol.Text);
evro:=StrToFloat(Edit_kurs_evro.Text);
sum:=StrToFloat(Edit15_perevod.Text);
{ If Not TryStrToFloat(Edit15_perevod.Text,sum) then
begin
ShowMessage('Вы ввели не корректную сумму');
// Exit;
end; }
if (CB_valuta_per.Text='Рубль') then
begin
if (CB_perevod_v.Text='Доллар') then
rez:=sum/dol;
Label24.Caption:=FloatToStr(rez) + ' доллара';
if (CB_perevod_v.Text='Евро') then
rez:=sum/evro;
Label24.Caption:=FloatToStr(rez) + ' евро';
end;
dol_pr:=StrToFloat(Edit_dol_prod.Text);
evro_pr:=StrToFloat(Edit_evro_prod.Text);
if (CB_valuta_per.Text='Доллар') and (CB_perevod_v.Text='Рубль') then
rez:=sum*dol_pr;
Label24.Caption:=FloatToStr(rez) + ' рубля';
if (CB_valuta_per.Text='Евро') and (CB_perevod_v.Text='Рубль') then
rez:=sum*evro_pr;
Label24.Caption:=FloatToStr(rez) + ' рубля';
end;И как сделать проверку поля на символы, типа что введены только цифры? TryStrToFloat почему то не работает |
|
#2
|
||||
|
||||
|
Ты забыл(а) begin поставить:
Код:
procedure TForm2_new_schet.But_perevodClick(Sender: TObject);
var dol,evro,sum,rez,dol_pr,evro_pr:single;
begin
dol:=StrToFloat(Edit_kurs_dol.Text);
evro:=StrToFloat(Edit_kurs_evro.Text);
sum:=StrToFloat(Edit15_perevod.Text);
{ If Not TryStrToFloat(Edit15_perevod.Text,sum) then
begin
ShowMessage('Вы ввели не корректную сумму');
// Exit;
end; }
if (CB_valuta_per.Text='Рубль') then
begin
if (CB_perevod_v.Text='Доллар') then begin
rez:=sum/dol;
Label24.Caption:=FloatToStr(rez) + ' доллара';
end;
if (CB_perevod_v.Text='Евро') then begin
rez:=sum/evro;
Label24.Caption:=FloatToStr(rez) + ' евро';
end;
end;
dol_pr:=StrToFloat(Edit_dol_prod.Text);
evro_pr:=StrToFloat(Edit_evro_prod.Text);
if (CB_valuta_per.Text='Доллар') and (CB_perevod_v.Text='Рубль') then begin
rez:=sum*dol_pr;
Label24.Caption:=FloatToStr(rez) + ' рубля';
end;
if (CB_valuta_per.Text='Евро') and (CB_perevod_v.Text='Рубль') then begin
rez:=sum*evro_pr;
Label24.Caption:=FloatToStr(rez) + ' рубля';
end;
end;Для проверки вводимых символов повесь событие на onKeyPress: Код:
if not (key in ['0..9',#8,#13,'.']) then begin
Showmessage('Разрешен ввод только цифр!');
key := #0;
end;Последний раз редактировалось xdessx, 26.09.2013 в 11:43. |
|
#3
|
||||
|
||||
|
В обработчике, где вводятся суммы найдите событие OnKeyPress и впишите в него следующий код:
Код:
Var k:integer;
begin
if Edit1.Text='0' then
if not(key in [',',#8]) then key:=#0;
if key in['0'..'9',',',#8] then //разрешаем вводить только числа
begin
if key=',' then //проверка для только одной запятой
begin
if Edit1.Text='' then key:=#0;
For k:=1 to Length(Edit1.Text) do
begin
if Edit1.Text[k]=',' then key:=#0;
end;
end;
end else key:=#0;Это старый "универский" вариант вместо not(Key in [...]) сейчас используют CharInSet функцию. А начиная с 2010 delphi у Edit появилось свойство NumbersOnly. |
| Этот пользователь сказал Спасибо Uniq! за это полезное сообщение: | ||
xdessx (26.09.2013)
| ||
|
#4
|
|||
|
|||
|
не совсем понятно, что вы имели ввиду. В том месте, куда вы предлагаете поставить end он не нужен. Расчетная часть выполняется правильно, не выводится только текст
|
|
#5
|
||||
|
||||
|
Цитата:
begin не уследили: Код:
if (CB_perevod_v.Text='Доллар') then
begin
rez:=sum/dol;
Label24.Caption:=FloatToStr(rez) + ' доллара';
end; |
|
#6
|
||||
|
||||
|
Цитата:
Ваш код: Код:
if (CB_valuta_per.Text='Доллар') and (CB_perevod_v.Text='Рубль') then rez:=sum*dol_pr; Label24.Caption:=FloatToStr(rez) + ' рубля'; Мой код: Код:
if (CB_valuta_per.Text='Доллар') and (CB_perevod_v.Text='Рубль') then begin rez:=sum*dol_pr; Label24.Caption:=FloatToStr(rez) + ' рубля'; end; |
| Этот пользователь сказал Спасибо xdessx за это полезное сообщение: | ||
anghela (26.09.2013)
| ||
|
#7
|
|||
|
|||
|
Цитата:
Не работает. А есть ли какой-нибудь другой вариант? |
|
#8
|
|||
|
|||
|
Цитата:
![]() Админ: Пока недельный бан за флуд... Последний раз редактировалось Admin, 26.09.2013 в 14:18. |