Para permitir solo números hexadecimales, dentro del evento onkeypress del edit puedes añadir un código tal que:
Código Delphi
[-]
If (Key in ['a'..'f']) then Key:=UpperCase(Key)[1];
If Not((Key in ['0'..'9'])
or (Key in ['A'..'F'])
or (Key= CHR(VK_BACK))) then
raise exception.Create(''''+Key+'''' + ' es incorrecto, solo se permiten numeros hexadecimales');
y para realizar la operacion de restar puedes usar por ejemplo:
Código Delphi
[-]Label1.caption:= IntToHex(StrToInt('$'+Edit1.Text) - $A42C, 4);
Espero que te sirva para tus propósitos
Edito: alguien se me adelantó ya :P.