Falsche Zuweisung am Anfang, so klappt es:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
dez, faktor, i: integer;
duz: string;
begin
//Edit1.Text := duz;
duz := Edit1.Text;
dez := 0;
faktor := 1;
for i := Length(duz) downto 1 do
begin
dez := dez + faktor * strtoint(duz[i]);
faktor := faktor * 2;
end;
Edit2.Text := inttostr(dez);
end;
Ich würde das aber allgemeingültiger gestalten, z.B. so:
Delphi-Quellcode:
function BinaryToInt(
const BinaryStr:
string): integer;
const
BITSPERBYTE = 8;
var
i, faktor, MaxDigits: integer;
begin
MaxDigits := SizeOf(Result) * BITSPERBYTE;
if Length(BinaryStr) > MaxDigits
then
raise Exception.CreateFmt('
Eingabe zu lang, maximal %d Zeichen erlaubt',
[MaxDigits]);
Result := 0;
faktor := 1;
for i := Length(BinaryStr)
downto 1
do
begin
case BinaryStr[i]
of
'
0':
;
//Keine Änderung, daher keine Aktion nötig
'
1':
Result := Result
or faktor;
else
raise Exception.Create('
Ungültige Eingabe, nur 0 und 1 erlaubt.');
end;
faktor := faktor
shl 1;
end;
end;