Вопрос
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 Сообщество Чайников
Контактная информация