For example, 1101 is a 1*10^0+0*10^1+1*10^2+1*10^3 So, inplementation of this algorithm is so:
function Pow(i, k: Integer): Integer; var j, Count: Integer; begin if k>0 then j:=2 else j:=1; for Count:=1 to k-1 do j:=j*2; Result:=j; end; function BinToDec(Str: string): Integer; var Len, Res, i: Integer; Error: Boolean; begin Error:=False; Len:=Length(Str); Res:=0; for i:=1 to Len do if (Str[i]='0')or(Str[i]='1') then Res:=Res+Pow(2, Len-i)*StrToInt(Str[i]) else begin MessageDlg('It is not a binary number', mtInformation, [mbOK], 0); Error:=True; Break; end; if Error=True then Result:=0 else Result:=Res; end; procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text<>'' then Label2.Caption:=IntToStr(BinToDec(Edit1.Text)); end;