so weit ich weiß ist die Case schneller als verschaltete If-Anweisungen und zwar weil es eine Art sprungtabelle erzeugt. Werden keine Konstanten verwendet so kann auch keine sprungtabelle angelegt werden (dazu werden die werte gebraucht) und somit kann der Compiler das nicht compilieren.
Verwende anstelle von Case in deinem Fall dann lieber
Delphi-Quellcode:
if Bedingung1 then
//Anweisung1
else if Bedingung2 then
//Anweisung2
else
//Anweisung3
end;