Zitat:
return(source - 'A' + 10);
In Delphi muß man die Typen erst casten.
Result := Ord(source) - Ord('A') + 10;
.
Den Rest solltest du selber Übersetzen können.
Und den Grund für diese Brechnungen findet man, wenn man sich mal die ordinalen Werte eines Char ansieht.
ASCII Tabelle
Ich nehme dafür aber gerne Array-Konstanten.
Delphi-Quellcode:
const ctoi: array['0'..'F'] of Byte = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15);
const itoc: array[0..15] of Char = '0123456789ABCDEF';
// oder
const itoc: array[0..15] of Char = ('0', '1', '2', ..., 'E', 'F');
Ein kleiner Array-Zugriff ist irgendwie einfacher, als eine "komplizierte" Berechnung.