就是用stringgrid读取一个文本文件,文本文件内容为
张三 98.3 foo foo foo
李四 100 foo foo foo
王五 99 foo foo foo显示到stringgrid中时按数值(即成绩)由大到小排序:姓名 成绩 列3 列4 列5
李四 100 foo foo foo
王五 99 foo foo foo
张三 98.3 foo foo foo
张三 98.3 foo foo foo
李四 100 foo foo foo
王五 99 foo foo foo显示到stringgrid中时按数值(即成绩)由大到小排序:姓名 成绩 列3 列4 列5
李四 100 foo foo foo
王五 99 foo foo foo
张三 98.3 foo foo foo
解决方案 »
- 递加并保持位数不变
- 在delphi里用clientdataset 如何调用sql server 的存储过程
- 怎样做个登录程序的界面?可以设置权限的
- 快快@@@@@@@@@@@@@@@@@@帮我看一下socket的错误@@@@@@@@@@@@@@@@@@@@@@@@@@@谢谢
- 如何在程序中接收SQL存储过程的结果?
- 那里有 Delphi 5.x ADO/MTS /COM+ 的ebook下载(囊中羞涩)
- 关于 调用 DLL 窗口的问题
- 怎么样将DBGRID的内容输出excel表格
- 把setup10个文件合并起来成exe的中文自解压:我用了Winrar汉化版 V2.8,有二个问题:1.解压缩文件的图标如何改成setup.exe文件图标?2.我口袋里只有RMB,没有美元,谁有注册码?^_^
- 如何将自已的EXE文件一运行就捆绑到另外一个EXE文件中去
- 小问题!~~~~~~~
- 求助SQL语句的写法:把一个计算字段的值赋给此表的实际字段
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
var
StrList: TStrings;
KeyArray: Array of Double;
temp: Double;
Changed: Boolean;
I,J: Integer;
function GetKey(str: string): Double;
var
P: Integer;
const
SepStr = #9;
begin
Result := 0;
P := AnsiPos(SepStr, str);
if P > 0 then
begin
Delete(str, 1, P);
P := AnsiPos(SepStr, str);
if P > 0 then
Result := StrToFloatDef(Copy(str, 1, P-1), 0);
end;
end;
begin
StrList := TStringList.Create;
StrList.LoadFromFile('g:\a.txt');
SetLength(KeyArray, StrList.Count);
for I := 0 to StrList.Count-1 do
KeyArray[I] := GetKey(StrList[I]);
StrList.BeginUpdate;
Changed := False;
for I := StrList.Count-1 downto 0 do
begin
for J := 0 to I-1 do
begin
if KeyArray[J] > KeyArray[J+1] then
begin
temp := KeyArray[J];
KeyArray[J] := KeyArray[J+1];
KeyArray[J+1] := temp;
StrList.Exchange(J, J+1);
Changed := True;
end;
end;
if not Changed then Break;
end;
StrList.EndUpdate;
StrList.SaveToFile('g:\aa.txt'); //此时的StrList中包含了排序后的内容
StrList.Free;
end;————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————