Цитата:
Сообщение от kobezzza
Вообщем сам перевод я по сути сделал:
Код:
procedure TForm1.BinToDecClick(Sender: TObject);
var
i,result:integer;
bin:string;
begin
bin:=BinDec.Text;
result:=0;
for i:=1 to length(bin) do
begin
result:=result+(1 shl(length(bin)-i));
end;
tr.Caption:=IntToStr(result);
end;
|
А разве так переводится в десятичную систему?

Вообще то формула такая (допустим надо перевести число 1101)
1*2^3 + 1*2^2 +0*2^1 +1*2^0 и получаем 8+4+1= 13.
Попробовал твой вариант считает по другому!
Цитата:
Сообщение от kobezzza
как указать, что если вводится числа отличные от 0 или 1
|
Код:
for i:=1 to length(bin) do
if (copy(BinDec.Text,i,1)<>IntToStr(1)) and (copy(BinDec.Text,i,1)<>IntToStr(0)) then
ShowMessage('Ошибка');