(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
Delphi 11 Alexandria
|
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] = ' 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;
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
|