试试这样行不行:
procedure TForm1.Button1Click(Sender: TObject);
var
  myStrList:TStringlist;
  i,p:integer;
begin
  myStrList:=TStringlist.Create;
  try
    for i:=0 to 20 do
    begin
      myStrList.Add(intToStr(i));
    end;    // 增加下面这行
    myStrList.Sort;
    myStrList.Find('4',p);
    showMessage(intTostr(p));
  finally
    FreeAndNil(myStrList);
  end;
end;

解决方案 »

  1.   

    好好看看书吧,你还没到发现bug的地步Find只能用在 Sort了的里面var
      myStrList:TStringlist;
      i,p:integer;
    begin
      p := 0;  try
        myStrList:=TStringlist.Create;
        for i := 0 to 20 do
        begin
            myStrList.Add(intToStr(i));
        end;
           myStrList.Sort;
           myStrList.Find('11',p);
           showMessage(intTostr(p));
      except
        myStrList.Free;
      end;排序规则是以字符排序为规则,即 '0', '1', '11','12'....'2'...