Hallo,
folgende Funktion ist von Christian Seehase!
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] = '
1'
then
begin // dann das entsprechende Bit setzen
Result := Result
or iPowerOfTwo;
end;
// Wert für nächste Stelle setzen
iPowerOfTwo := iPowerOfTwo
shl 1;
end;
end;
Grüsse, Daniel