The Unofficial Newsletter of Delphi Users - by Robert Vivrette

Один из путей использования оператора  Case со строками

By Lutz Lang - Lutz.Lang@T-Online.de

Перевод Руденко Е.В.   janer@newmail.ru    апрель 2001 года

Здесь описан нестандартный путь использования оператора Сase со строками. 

Продекларируем функцию  StrCase с массивом строк в качестве параметра. Эта функция проверяет строку - селектор строкового массива и определяет положение селектора в массиве ( от 0 до count-1). Если селектор не найден , возвращается результат  -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;

Теперь вы можете использовать функцию  StrCase вместо оператора  Сase - в результате получается очень простая конструкция.
 

procedure TestString(StringToTest: string);
begin
  case StrCase(StringToTest, ['First', 'Second', 'Third']) of
    0: ShowMessage('1: ' + s);
    1: ShowMessage('2: ' + s);
    2: ShowMessage('3: ' + s);
  else
    ShowMessage('else: ' + s);
  end;
end;

 Преимущества - это использование одной функции для всех вариантов строк и  отсутствие каких-либо добавочных спецификаций типов.

Успеха!

Возврат в Tips&Tricks