Ошибка при выводе значения в лейбл

Ошибка в коде:
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 почему то не работает
5 ответов

а значения "столько то долларов/столько то евро" он не выводит
Этот код будет выводить "столько то долларов/столько то евро" только тогда, когда одновременно CB_valuta_per.Text='Рубль' и CB_valuta_per.Text='Доллар'(или CB_valuta_per.Text='Евро'). Т.е. никогда.
TryStrToFloat почему то не работает
Как пробовали?


поля же разные, они не совпадают
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;


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;
if CB_valuta_per.Text='Доллар' then
 begin
 rez:=sum*dol_pr; 
 Label24.Caption:=FloatToStr(rez) + ' рубля';
 end;
if CB_valuta_per.Text='Евро' then
 begin 
 rez:=sum*evro_pr;
 Label24.Caption:=FloatToStr(rez) + ' рубля';
 end;
у вас не выводит значение в долларах и в евро при каком значении лейбла "CB_valuta_per"? насколько я понял, если надо переводить рубли, то перевести их надо и в доллары и в евро... если переводят евро или доллары, то только в рубли?или же нужно вывести значения во всех трех валютах?


Label24.Caption:=FloatToStr(rez) + ' рубля';
Вот эта строка выполняется в конце кода дважды независимо ни от каких условий.


Всем спасибо! Работает