Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2017, 23:16   #1
Richards
Пользователь
 
Регистрация: 04.05.2017
Сообщений: 10
По умолчанию Системы счисления и Radiobutton

Помогите пожалуйста, как можно реализовать систему счисления используя RadioButton?
апр.png
Вот исходник:
Calc.7z
Richards вне форума Ответить с цитированием
Старый 05.05.2017, 10:04   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нужно сделать всего три вещи:
1) интерфейс - при выборе системы счисления убирать "избыточные" клавиши.
например, выбрали "bin" оставляем только клавиши "1" и "0" - остальные баттоны сделать .enable := false;
выбрали "Oct" оставляем только клавиши "0","1","2","3","4","5","6","7" - остальные баттоны сделать .enable := false;

2) при нажатии вычислительной клавиши, то, что в окошке ввода переводим из строкового представления с выбранной СС -> число (десятичное).

3) после выполнения вычислений то, что получилось переводим в нужную систему СС.

всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2017, 13:47   #3
Richards
Пользователь
 
Регистрация: 04.05.2017
Сообщений: 10
По умолчанию

Это я и сам знаю как сделать, как реализовать функцию CC для Radiobutton (имеется виду чтоб вычисляла и переход между Radiobutton)
Richards вне форума Ответить с цитированием
Старый 05.05.2017, 14:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Richards Посмотреть сообщение
имеется виду чтоб вычисляла и переход между Radiobutton
по нажатию кнопки выбора системы счисления запоминайте выбранную base (
например, заведите, глобальную переменную var base : Integer;

для перевода из одной системы счисления в другую можете воспользоваться кодом отсюда - Перевод из любой системы счисления в любую

или взять отдельно процедуры вида -
тыц
тыц
тыц

замечания.
1) уберите у себя работу с дробными числами. работайте только с целыми!
strtofloat нужно вообще выкинуть.
2) на будущее учтите, что код, который у Вас написан на процедурах клика
RadioButtonXClick()
содержит грубую логическую ошибку.

вот это:
Код:
Цитата:
begin If RadioButton2.Checked then Button2.Enabled:=true; Button3.Enabled:=true; Button4.Enabled:=true; Button5.Enabled:=true; Button6.Enabled:=true; Button7.Enabled:=true; Button8.Enabled:=false; Button9.Enabled:=false; Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false; end; procedure TForm1.RadioButton3Click(Sender: TObject); begin If RadioButton3.Checked then Button2.Enabled:=true; Button3.Enabled:=true; Button4.Enabled:=true; Button5.Enabled:=true; Button6.Enabled:=true; Button7.Enabled:=true; Button8.Enabled:=true; Button9.Enabled:=true; Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false; end; procedure TForm1.RadioButton4Click(Sender: TObject); begin If RadioButton4.Checked then Button2.Enabled:=true; Button3.Enabled:=true; Button4.Enabled:=true; Button5.Enabled:=true; Button6.Enabled:=true; Button7.Enabled:=true; Button8.Enabled:=true; Button9.Enabled:=true; Button16.Enabled:=true;Button17.Enabled:=true;Button18.Enabled:=true;Button19.Enabled:=true;Button20.Enabled:=true;Button21.Enabled:=true; end;
после в зависимости от If RadioButton4.Checked then выполняется только одна строчка кода.
остальные выполняются ВСЕГДА.
но всё работает, т.к. процедура Click всегда делает кнопку Checked

поэтому, можете свой код заменить на
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  Button2.Enabled:=false;
  Button3.Enabled:=false;
  Button4.Enabled:=false;
  Button5.Enabled:=false;
  Button6.Enabled:=false;
  Button7.Enabled:=false;  Button8.Enabled:=false; Button9.Enabled:=false;
  Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false;
end;



procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Button3.Enabled:=true;
  Button4.Enabled:=true;
  Button5.Enabled:=true;
  Button6.Enabled:=true;
  Button7.Enabled:=true;
  Button8.Enabled:=false; Button9.Enabled:=false;
  Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false;
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Button3.Enabled:=true;
  Button4.Enabled:=true;
  Button5.Enabled:=true;
  Button6.Enabled:=true;
  Button7.Enabled:=true;
  Button8.Enabled:=true; Button9.Enabled:=true;
  Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false;

end;

procedure TForm1.RadioButton4Click(Sender: TObject);
begin
  Button2.Enabled:=true;
  Button3.Enabled:=true;
  Button4.Enabled:=true;
  Button5.Enabled:=true;
  Button6.Enabled:=true;
  Button7.Enabled:=true;
  Button8.Enabled:=true; Button9.Enabled:=true;
  Button16.Enabled:=true;Button17.Enabled:=true;
  Button18.Enabled:=true;Button19.Enabled:=true;Button20.Enabled:=true;Button21.Enabled:=true;

end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.05.2017, 19:59   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.05.2017, 21:16   #6
Richards
Пользователь
 
Регистрация: 04.05.2017
Сообщений: 10
По умолчанию

А из ходя из этой функции:
Код:
 function ConvertCC(x:string;fromCC,toCC:Integer):String;
const
  abc='0123456789ABCDEFGHIJKLMNOPQESTUVWXYZ';
var
 i,k,ten,stp:integer;
begin
 ten:=0;
 stp:=1;
 Result:='';
 for i:=Length(x) downto 1 do begin
   k:=Pos(x[i],abc)-1;
   ten:=ten+k*stp;
   stp:=stp*fromCC;
 end;
 while ten<>0 do begin
   i:=ten mod toCC;
   Result:=abc[i+1]+Result;
   ten:=ten div toCC;
 end;
end;
Как можно записать что при выборе, например RadioButton1 (Bin) переводилось из двоичной системы в 8, 10 и 16, а при выборе, например RadioButton2 (Oct) переводилось из двоичной системы в 2, 10 и 16 и т. д.
Я побывал писать но у меня какой-то бред получается, вот даже исходник скину:
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
var
Option:integer;
begin
Case Option of
Edit1.Text:=ConvertCC(inttostr(8));
Edit1.Text:=ConvertCC(inttostr(10));
Edit1.Text:=ConvertCC(inttostr(16));
  Button2.Enabled:=false;
  Button3.Enabled:=false;
  Button4.Enabled:=false;
  Button5.Enabled:=false;
  Button6.Enabled:=false;
  Button7.Enabled:=false;  Button8.Enabled:=false; Button9.Enabled:=false;
 Button16.Enabled:=false;Button17.Enabled:=false;Button18.Enabled:=false;Button19.Enabled:=false;Button20.Enabled:=false;Button21.Enabled:=false;
end;
Richards вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает преобразование кода из одной системы счисления в ID в другой системе счисления Ultran PHP 1 09.11.2013 21:15
Системы счисления. C++ Alovar Помощь студентам 2 25.12.2010 23:26
Системы счисления на C# Bakalavr Помощь студентам 7 29.11.2010 19:20
Системы счисления.10->5-7. Corpinccom Помощь студентам 0 22.09.2010 12:54
Системы счисления Nikitaunett Помощь студентам 17 24.11.2009 20:20