Case语句的串检索

字体大小: 中小 标准 ->行高大小: 标准
case结构不支持了字符串检索,怎么办
do like this: 
const
   strArray : array [0..10] of string =(['str0', 'str1', 'str2', ...);

for i := 0 to 10 do
  if strArray[i] = str then
case i of
  0: do str1 thing
  1: do str1 thing
  2:
  ...
end;
*****************
function CaseString (const s: string; // Search for 
                     ci: Boolean; 
                     // if true looking case insensitive 
                     p: Boolean; 
                     // if true looking if s is in the compared string 
                     const x: array of string): Integer; 
var i: Integer; 
    s1, s2: string; 
begin 
Result:= -1; 
for i:= Low (x) to High (x) do begin 
  s1:= s;  s2:= x[i]; 
  if ci then begin 
   AnsiUpperCase(s1); 
   AnsiUpperCase(s2); 
  end; 
  if p then begin 
   if Pos (s1, s2) > 0 then begin  Result:= i;  Exit;  end; 
  end else begin 
   if s1 = s2 then begin  Result:= i;  Exit;  end; 
  end; 
end; 
end;  

调用:
search:= 'delphi3000'; 
case CaseString (search, ['delphi3000', 
                           'delphipages', 
                           'Torry's']) of 
  0: s:= 'Excellent!'; 
  1: s:= 'Good source'; 
  2: s:= 'Not bad!'; 
end; 
***************************************************
uses 
  TypInfo; 

type 
  TNumericChoiceParent = (ncp_Mother, ncp_Father, ncp_Child); 

procedure TForm1.btChooseClick(Sender: TObject); 
var 
  S: string; 
begin 
  S := InputEdit.Text; 
  case TNumericChoiceParent(GetEnumValue(TypeInfo(TNumericChoiceParent), 'ncp_' + S)) of 
    ncp_Mother: ShowMessage('Hello Mom :o)'); 
    ncp_Father: ShowMessage('Hi, Dad -]'); 
    ncp_Child: ShowMessage('Shut up and eat your soup !-('); 
  else 
    ShowMessage('Who do you think that you are?'); 
  end; 
end; 

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67742.html