字符型在字符型数组中的接近值

求一个字符型在字符型数组中的接近值.
本帖最后由 W9757 于 2012-11-28 14:30:20 编辑

procedure TForm1.Button3Click(Sender: TObject);
var sl:TStrings;
    i:integer;
    MyA: array[0..2] of string;
    s:string;
begin
  s:='2.5';
  sl:=TStringList.Create;
  sl.Delimiter:=',';
  sl.CommaText :='1,3,5';
  for i := 0 to sl.Count-1 do
  begin
   MyA[i]:= sl.Strings[i];
  end;
  sl.Free;
  //求在mya中的接近的3.
end;

------解决方案--------------------
该例程中没有考虑数据的合法性。假设都是理想数据。

procedure TForm1.Button1Click(Sender: TObject);
var sl:TStrings;
     i,j:integer;
     a,b:double;
     s:string;
   begin
     s:='2.5';
     a:=abs(strtofloat(s));
     j:=0;
     sl:=TStringList.Create;
     sl.Delimiter:=',';
     sl.CommaText :='1,3,5';
     for i := 0 to sl.Count-1 do
     begin
      b:=abs(strtofloat(sl.Strings[i])-strtofloat(s));//取差的绝对值
      if a>b then begin  //如果离S近就更换当前值
       a:=b;
       j:=i;
       end;
     end;
     showmessage(sl.Strings[j]);
     sl.Free;   //求在mya中的接近的3.
   end;
end.