Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Аналог case для строки

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

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


 const
   vlist = 'первый, второй, третий';
 
 var
   Values: TStringList;
 
 procedure SetValues(VL : TStringList; S: String);
 var
   I : Integer;
 begin
   VL.CommaText := S;
   for I := 0 to CL.Count-1 do
     VL.Objects[I] := Pointer(I);
   VL.Sorted := True;
 end;
 
 function GetValueIndex(VL : TStringList; Match: String): Integer;
 begin
   Result := VL.IndexOf(Match);
   if Result >= 0 then
     Result := Integer(VL.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
   VL := TStringList.Create;
   SetValues(VL, vlist);
 
 finalization
   VL.Free;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS