Ok den Fall einer leeren Eingabe sollte man natürlich noch behandeln.
Und die Initialisierung von "erfolgreich" gehört natürlich in die Schleife, sonst wird nach einer falschen Eingabe keine andere Eingabe mehr als richtig betrachtet.
Delphi-Quellcode:
..
repeat
erfolgreich := True;
writeln('Bitte Hexadezimalzahl eingeben:');
readln(eingabe);
if not length(eingabe) >= 1 then
erfolgreich := False;
..