Hola,
En Delphi, las cadenas de caracteres empiezan con un indice de uno.
En vez de
Código:
for x := 0 to (length(cadena)-1 do
Tendrias que usar
Código:
for x := 1 to length(cadena) do
Si funciona tal como está, es por suerte, y dejas de comprobar el ultimo caracter.
Esta és aún más rápida (Te ahoras las conversiones de TryStrToInt):
Código:
Result := false;
for x := 1 to length(cadena) do
if not (Cadena[x] in ['0'..'9','a'..'f','A'..'F']) then exit;
result := true;
Cordialmente,
Gerard.