问题来源:
http://www.cnblogs.com/del/archive/2008/04/07/1134178.html#1141173
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{写一个按数字大小倒排序的函数}
function DescCompareInt(List: TStringList; I1, I2: Integer): Integer;
begin
I1 := StrToIntDef(List[I1], 0);
I2 := StrToIntDef(List[I2], 0);
Result := I2 - I1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
List: TStringList;
begin
List := TStringList.Create;
List.CommaText := '5,21,4,65,87,1,3';
List.CustomSort(DescCompareInt); {排序时调用那个函数}
ShowMessage(List.Text); {87 65 21 5 4 3 1}
List.Free;
end;
end.
另外, 你问的再对应其他数据的问题, 可以利用 TStringList 的 Names 和 ValueFromIndex 属性解决, 也可以在提取是使用 case 语句.