|
|
Регистрация | << Правила форума >> | 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. |