Mirror

Case statement that *accepts* string values (Views: 100)

Problem/Question/Abstract:

You've probably tried providing a Case statement with string type selector expression, to find out that it only takes ordinal types (which string is not).

The following function enables you to use the Case statement with string type variables:


Answer:

function StringToCaseSelect
(Selector : string;
CaseList: array of string): Integer;
var cnt: integer;
begin
Result:=-1;
for cnt:=0 to Length(CaseList)-1 do
begin
if CompareText(Selector, CaseList[cnt]) = 0 then
begin
Result:=cnt;
Break;
end;
end;
end;

{
Usage:

case StringToCaseSelect('Delphi',
['About','Borland','Delphi']) of
0:ShowMessage('You''ve picked About') ;
1:ShowMessage('You''ve picked Borland') ;
2:ShowMessage('You''ve picked Delphi') ;
end;
}


<< Back to main page