Zitat:
Delphi-Quellcode:
procedure TZitrone.ZFarbe(a: String);
begin
if (LowerCase(a) = 'grün') or (LowerCase(a) = 'gelb') then
FZitronenfarbe := a
else
FZitronenfarbe := 'gelb';
end;
Wobei man sich hier noch überlegen kann, ob es nich besser wäre einen Fehler zu werfen
oder still und heimlich einen "Standardwert" zu setzen (so wie es aktuell gemacht wird)
oder den aktuellen Wert in diesem Fall garnicht zu ändern.
Delphi-Quellcode:
procedure TZitrone.ZFarbe(a:
String);
begin
if MatchText(a, ['
grün', '
gelb'])
then // if (LowerCase(a) = 'grün') or (LowerCase(a) = 'gelb') then
FZitronenfarbe := a
else
raise Exception.CreateFmt('
Die Farbe "%s" ist nicht erlaubt.', [a]);
end;
Delphi-Quellcode:
procedure TZitrone.ZFarbe(a: String);
begin
if MatchText(a, ['grün', 'gelb']) then
FZitronenfarbe := a;
end;
PS:
LowerCase ist eine uralte "schnelle"/einfache Funktion und unterstützt
nur ASCII, also keine Ä, Ö und Ü.
Hier sollte man besser
AnsiLowerCase verwenden.
Aber nicht Wundern ... irgendwer ist bei der Umstellung auf
Unicode (D2009) auf die saublöde Idee gekommen und hat die
Unicode-Versionen mit
Ansi benannt.
(
WideLowerCase geht dafür nur auf den WideString und sollte mit String/UnicodeString besser nicht verwendet werden)
PSS: Bei
MatchText ist das Anders, denn dieses ist eine "Umleitung" zur passenden Funktion (hier
AnsiMatchText)