СообЧа > База Знаний > Программирование > Delphi

Вопрос

Hужно определить с какой из заданных строк совпадает некая строковая переменная и в зависимости от этого перейти к соответсвующей процедуре. Как это выполнить без использования многочисленных if — then?

Ответ

Вот способ, легко приспосабливаемый для загрузки списка из строки, файла или ресурса:

const
    vlist = 'первый, второй, третий';
var
    Values: TStringList;
procedure SetValues(VL : TStringList; S: String);
var
    I : Integer;
begin
    Values.CommaText := S;
    for I := 0 to CL.Count-1 do
   Values.Objects[I] := Pointer(I);
    Values.Sorted := True;
end;

function GetValueIndex(VL : TStringList; Match: String): Integer;
begin
    Result := Values.IndexOf(Match);
    if Result >= 0 then
   Result := Integer(Values.Objects[Result]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   case GetValueIndex(Values, Edit1.Text) of
      -1: {не найден} ;
       0: Caption := '0';
       1: Caption := '1';
       2: Caption := '2';
    end;
end;

initialization
    Values := TStringList.Create;
    SetValues(Values, vlist);

finalization
    Values.Free;

Из конференции Delphi



Copyright © 2000-2004 Сообщество Чайников
Контактная информация