Thema: Delphi bin2dec

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 6. Apr 2003, 02:05
Moin Noob on Knees,

und so ginge es auch:

Delphi-Quellcode:
function BinToInt(const AsValue : string) : integer;

const
  // In einer Binärzahl erlaubte Ziffern
  _aBinDigits = ['0','1'];

var
  iPowerOfTwo : integer; // Enthält den Wert der 2er Potenz der gerade bearbeiteten Stelle
  i : integer; // Schleifenzähler

begin
  Result := 0; // Ergebnis initialisieren
  iPowerOfTwo := 1; // mit 2 hoch 0 anfangen
  // Auf gültige Länge prüfen
  if (length(AsValue) < 1) or (length(AsValue) > 32) then
  begin // Sonst Exception erzeugen
    raise Exception.Create('Die Zahl muss zwischen 1 und 32 Stellen haben.');
  end;
  // mit der niederwertigsten Stelle anfangen und hocharbeiten
  for i := length(AsValue) downto 1 do
  begin
    // Auf gültige Ziffer prüfen
    if not (AsValue[i] in _aBinDigits) then
    begin // falls nicht Exception erzeugen
      raise Exception.Create('Es dürfen nur die Ziffern 0 und 1 vorkommen.');
    end;
    // Wenn die Stelle eine 1 ist
    if AsValue[i] = '1then
    begin // dann das entsprechende Bit setzen
      Result := Result or iPowerOfTwo;
    end;
    // Wert für nächste Stelle setzen
    iPowerOfTwo := iPowerOfTwo shl 1;
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat