Es gibt eine Reihe von Vorschlägen, wie man in Delphi case mit Strings verwenden kann. Hier ein Vorschlag von mir:
Ich verwende eine Funktion StrCase mit einem Übergabeparamter vom Typ open string array. Die Funktion testet einen ebenfalls übergebenen String (den Selektor) gegen jeden Wert in der Liste und gibt die gefundene Position (0 bis Anzahl - 1) als Funktionswert zurück. Falls die Funktion keine Übereinstimmung findet, ist das Ergebnis -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;
Jetzt kann man die Funktion StrCase anstelle des case-Selektors verwenden und erhält somit eine einfache Konstruktion:
procedure TestString(StringToTest: string);
begin
case StrCase(StringToTest, ['Eins', 'Zwei', 'Drei']) of
0: ShowMessage('1: ' + s);
1: ShowMessage('2: ' + s);
2: ShowMessage('3: ' + s);
else
ShowMessage('else: ' + s);
end;
end;
Das ist bereits alles. Der Vorteil dieser Funktion besteht darin, dass für alle ”String-Case”-Anwendungen eine Funktion zur Verfügung steht, die keine zusätzliche Typkonvertierung oder andere Gemeinheiten erfordert.
