//------------------------------已知一个TStringlist,存放一些string,例如:
100000056,
100000034,
100000012,而每个string在FHXXB 中队应一个SBBM,最后要按该SBBM的第二第三位的大小来从小到大排序。
100000056,   对应  1040003
100000034,         1060002
100000012,         1030005
结果应为:100000012,100000056,100000034,构成的Tstringlist;
 我用下面的程序写的,为什么效率很低? 
procedure SortFh(var SourceList: TStringList);
var
  i,j,cntsb1,cntsb2:integer;
  tempstr,temp,sb,sb1,sb2:string;
begin
  for i:=0 to sourcelist.Count -1 do
  begin
    tempstr:='select SBBM from "FHXXB" where FHBM='''+SourceList[i]+'''';
    openquery(mado,tempstr,true);
    if not mado.Eof then
      sb:=mado.FieldByname('SBBM').asstring;
    sourcelist.Strings[i]:= sourcelist.Strings[i]+copy(sb,2,2);
  end;
  for i:=0 to SourceList.Count -2 do
  begin
    for j:=i+1 to SourceList.Count -1 do
    begin
       if rightstr(sourcelist.Strings[i],2)> rightstr(sourcelist.Strings[j],2) then
       begin
         temp:= SourceList[i];
         SourceList[i]:=SourceList[j];
         SourceList[j]:=temp;
       end;
    end;
  end;
  for i:=0 to sourcelist.count-1 do
  begin
    SourceList[i]:= leftstr(SourceList[i],9);
  end;