There are some proposals how to use case with strings in Delphi. Have a look at my suggestion:
I use a function StrCase with one parameter of type open string array. The function checks the string parameter (the selector) against the values in the array. The result is the position of the string whether found within the array (0 to count - 1). If the array doesn't contain the selector the result is -1.
function StrCase(Selector: string; StrList: array of string): Integer; var I: Integer; begin Result := -1; for I := 0 to High(StrList) do begin if Selector = StrList[I] then begin Result := I; break; end; end; end;
Now it is possible to use the function StrCase instead of the case selector:
procedure TestString(StringToTest: string); begin case StrCase(StringToTest, ['One', 'Two', 'Three']) of 0: ShowMessage('1: ' + s); 1: ShowMessage('2: ' + s); 2: ShowMessage('3: ' + s); else ShowMessage('else: ' + s); end; end;
That's all. Use the function everywhere a "String-Case" is necessary.