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;
Najlepiej to pobrać FPC/Lazarusa; tam już się postarali o string case :)
Zamiast
CompareText
można użyćSameText
lubSameStr
; 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