StringCase

woolfik

Czy czasami potrzebowaliście użyć funkcji case do string'ów? Ja ostatnio miałem do wyboru napisać kilkanaście if'ów lub funkcję Case dla string'ów. Udało się, poniżej gotowy kod:

function StringCase(aWybor: String; lista: TStringList): Integer;
var
  I: integer;
begin
  Result := -1;
  for I := 0 to Length(lista) - 1 do
    if CompareText(aWybor, lista[i]) = 0 then
      begin
        Result := I;
        Break;
      end;
end;

Sposób użycia:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  sList: TStringList;
begin
  sList := TStringList.Create;
 
  try
    sList.LoadFromFile('nazwa_pliku');
 
    case StringCase(edtNazwa.text,sList) of
      0: ShowMessage('Cos tam 1') ;
      1: ShowMessage('Cos tam 2') ;
      2: ShowMessage('Cos tam 3') ;
    end;
  finally
    sList.Free;
  end;
end;

3 komentarzy

Najlepiej to pobrać FPC/Lazarusa; tam już się postarali o string case :)

Zamiast CompareText można użyć SameText lub SameStr; Zwracają wartość logiczną, ta pierwsza nie rozróżnia wielkości znaków, druga tak;

Tam ma byc if CompareText(wybor, lista[i]) = 0 then niestety cos sie posypalo na CompareText