Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Umrechner, kleines Problem

  Alt 10. Feb 2015, 10:38
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat