Показать сообщение отдельно
  #3  
Старый 28.03.2008, 20:31
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от 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('Ошибка');
Ответить с цитированием