假设我的存储了这么一组数据
"00052","艾敬","Singer\","9"
"00068","才旦卓玛","Singer\","5"
"00059","白雪","Singer\","9"
"00097","陈红","Singer\","1"
"00106","陈琳","Singer\","8"
"00110","陈明","Singer\","9"
"00136","成方圆","Singer\","7"
"00143","崔萍","Singer\","5"
"00169","范春梅","Singer\","9"
"00187","甘萍","Singer\","7"
"00222","杭天琪","Singer\","9"
"00228","何静","Singer\","78"
"00284","江珊","Singer\","77"
"00295","金海心","Singer\","49"
"00325","李丹阳","Singer\","4"
"00326","李谷一","Singer\","0"
"00339","李娜","Singer\","1","4"
"00340","李琼","Singer\","1"
"00375","林萍","Singer\","1"
"00389","刘春梅","Singer\","1"
"00403","刘媛媛","Singer\","9"
"00409","陆萍","Singer\","8
"00433","毛阿敏","Singer\","8"
"00446","那英","Singer\","84
"00491","斯琴格日乐","Singer\","88"
"00492","宋祖英","Singer\","7
"00502","孙悦","Singer\","57
"00509","汤灿","Singer\","7"
"00519","田震","Singer\","4"
"00521","童欣","Singer\","6"
"00525","娃娃","Singer\","6"
"00552","韦唯","Singer\","9"
"00570","吴琼","Singer\","66"
"00704","张也","Singer\","87"
"00718","赵薇","Singer\","13"
"00739","周冰倩","Singer\","9"
"00753","周璇","Singer\","9"
"00770","祖海","Singer\","9"现在我想把最右边分隔符(,)的右边的整型数据排序,请问哪位高手知道吗,小弟真的很急,解决马上给分!
"00052","艾敬","Singer\","9"
"00068","才旦卓玛","Singer\","5"
"00059","白雪","Singer\","9"
"00097","陈红","Singer\","1"
"00106","陈琳","Singer\","8"
"00110","陈明","Singer\","9"
"00136","成方圆","Singer\","7"
"00143","崔萍","Singer\","5"
"00169","范春梅","Singer\","9"
"00187","甘萍","Singer\","7"
"00222","杭天琪","Singer\","9"
"00228","何静","Singer\","78"
"00284","江珊","Singer\","77"
"00295","金海心","Singer\","49"
"00325","李丹阳","Singer\","4"
"00326","李谷一","Singer\","0"
"00339","李娜","Singer\","1","4"
"00340","李琼","Singer\","1"
"00375","林萍","Singer\","1"
"00389","刘春梅","Singer\","1"
"00403","刘媛媛","Singer\","9"
"00409","陆萍","Singer\","8
"00433","毛阿敏","Singer\","8"
"00446","那英","Singer\","84
"00491","斯琴格日乐","Singer\","88"
"00492","宋祖英","Singer\","7
"00502","孙悦","Singer\","57
"00509","汤灿","Singer\","7"
"00519","田震","Singer\","4"
"00521","童欣","Singer\","6"
"00525","娃娃","Singer\","6"
"00552","韦唯","Singer\","9"
"00570","吴琼","Singer\","66"
"00704","张也","Singer\","87"
"00718","赵薇","Singer\","13"
"00739","周冰倩","Singer\","9"
"00753","周璇","Singer\","9"
"00770","祖海","Singer\","9"现在我想把最右边分隔符(,)的右边的整型数据排序,请问哪位高手知道吗,小弟真的很急,解决马上给分!
解决方案 »
- DBGrid绑定数表如何显示行数
- 怎么做一个字母的小键盘 ,并在edit中显示?
- *************这条代码该怎么写?***************
- 帮忙一下,分快用完了,delphi+MSSQL,怎样用SQL语句算出下面的值?
- 帮忙,如何做一个用户自定义的软件!
- 谁知道Delphi7为什么没有QuickReport?!朋友非要我问不可!
- 怎样设计像股票软件一样的功能,能下载数据到本地进行脱机浏览数据.
- 感觉DBGrid功能太弱,帮忙推荐几个好的免费Grid组件!
- 请问如何关闭IE弹出来的非运行期错误对话框?什么
- 请问鼠标在控件上移走触发什么事件?
- 若大一个论坛,怎么就没有人会这个呢!
- 问关于assign得assigned的用法
使用AddObject
例:
--------------------------
var
tls:TStringList;
i:integer;
begin
tls:=TStringList.Create;
try
tls.AddObject('"9"',TObject(PChar('"00052","艾敬","Singer\","9"')));
tls.AddObject('"5"',TObject(PChar('"00068","才旦卓玛","Singer\","5"')));
tls.AddObject('"9"',TObject(PChar('"00059","白雪","Singer\","9"')));
tls.AddObject('"1"',TObject(PChar('"00097","陈红","Singer\","1"')));
tls.AddObject('"8"',TObject(PChar('"00106","陈琳","Singer\","8"')));
....
tls.Sort;
for i:=0 to tls.Count-1 do
ShowMessage(PChar(tls.Objects[i]));
finally
tls.Free;
end;
end;
-------------------------
具体的代码自己写.
能不能由大到小排序呀?
itm:TStringList;
getStr:string;
begin
itm:=TStringList.Create;
itm.Delimiter:=',';//你的分隔符
itm.DelimitedText:='"00052","艾敬","Singer\","9"';
getStr:=itm.strings[2];//如要取"00052"则此处为0,以此类推。
end;
itm:TStringList;
getStr1,getStr2,getStr3,getStr4:string;
begin
itm:=TStringList.Create;
itm.Delimiter:=',';//你的分隔符
itm.DelimitedText:='"00052","艾敬","Singer\","9"';
getStr1:=itm.strings[0];//取得第一个字段值"00052"
getStr2:=itm.strings[1];//取得第二个字段值"艾敬"
getStr3:=itm.strings[2];//取得第三个字段值"Singer\"
getStr4:=itm.strings[3];//取得第四个字段值"9"
然后通过insert语句写入数据表
全部记录写完后,可以select * from 表 order by 第四个字段 desc 实现从大到小排序。
end;
其实我的这种排序的原因就是因为我的数据全部一次性读到内存中了(有两个表,分别放在不同的Tstringlist中),我现在可以把需要的数据检索到一个TStringlist中,但发现需要对
'"00052","艾敬","Singer\","9"'
的最后一列即:"9"进行由大到小排序,烦请您多指教!
从大到小排列?你读取的时候从tstringlist的最后一个读起,不就好了。
能不能由大到小排序呀?
==========================
function DStringListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
begin
if List.CaseSensitive then
Result := AnsiCompareStr(List.Strings[Index2], List.Strings[Index1])
else
Result := AnsiCompareText(List.Strings[Index2], List.Strings[Index1]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tls:TStringList;
i:integer;
begin
tls:=TStringList.Create;
try
tls.AddObject('"9"',TObject(PChar('"00052","艾敬","Singer\","9"')));
tls.AddObject('"5"',TObject(PChar('"00068","才旦卓玛","Singer\","5"')));
tls.AddObject('"9"',TObject(PChar('"00059","白雪","Singer\","9"')));
tls.AddObject('"1"',TObject(PChar('"00097","陈红","Singer\","1"')));
tls.AddObject('"8"',TObject(PChar('"00106","陈琳","Singer\","8"')));
//....
tls.CustomSort(DStringListCompareStrings);
for i:=0 to tls.Count-1 do
ShowMessage(PChar(tls.Objects[i]));
finally
tls.Free;
end;
end;
"00768","卓依婷","Singer\","20"
"00122","陈小春","Singer\","?
"00156","邓丽君","Singer\","<
"00098","陈慧琳","Singer\","?
"00768","卓依婷","Singer\","20"
"00768","卓依婷","Singer\","20"
"00768","卓依婷","Singer\","20"
"00768","卓依婷","Singer\","20"
"00768","卓依婷","Singer\","20"
"00666","袁凤瑛","Singer\","?
"00017","F4","Singer\","(
"00034","S.H.E","Singer\","4<
"00768","卓依婷","Singer\","20"
"00437","梅艳芳","Singer\","?
"00561","巫启贤","Singer\","<
"00768","卓依婷","Singer\","20"
"00768","卓依婷","Singer\","20"
"00392","刘欢","Singer\","4"<
"00475","任贤齐","Singer\","<
"00536","王力宏","Singer\","?
"00530","王菲","Singer\","4"<
"00768","卓依婷","Singer\","20"
"00495","苏芮","Singer\","4"<
"00503","邰正宵","Singer\","<
"00615","许志安","Singer\","?
unsigned(僵哥(当程序语言成为普及的第三语言之后……)) 给的方法当数据一多的时候就会出现特殊字符,你可以用下面的数据测试下 :
Memo1.Lines.text :如下
"00052","艾敬","Singer\","9"
"00053","艾静","Singer\","20"
"00059","白雪","Singer\","9"
"00068","才旦卓玛","Singer\","5"
"00097","陈红","Singer\","1"
"00106","陈琳","Singer\","8"
"00110","陈明","Singer\","9"
"00136","成方圆","Singer\","7"
"00143","崔萍","Singer\","5"
"00169","范春梅","Singer\","9"
"00187","甘萍","Singer\","7"
"00222","杭天琪","Singer\","9"
"00228","何静","Singer\","78"
"00284","江珊","Singer\","77"
"00295","金海心","Singer\","49"
"00325","李丹阳","Singer\","4"
"00326","李谷一","Singer\","0"
"00339","李娜","Singer\","1"
"00340","李琼","Singer\","1"
"00375","林萍","Singer\","1"
"00389","刘春梅","Singer\","1"
"00403","刘媛媛","Singer\","9"
"00409","陆萍","Singer\","8"
"00433","毛阿敏","Singer\","8"
"00446","那英","Singer\","84"
"00491","斯琴格日乐","Singer\","88"
"00492","宋祖英","Singer\","7"
"00502","孙悦","Singer\","57
"00509","汤灿","Singer\","7"
"00519","田震","Singer\","4"
"00521","童欣","Singer\","6"
"00525","娃娃","Singer\","6"
"00552","韦唯","Singer\","9"
"00570","吴琼","Singer\","66"
"00704","张也","Singer\","87"
"00718","赵薇","Singer\","13"
"00739","周冰倩","Singer\","9"
"00753","周璇","Singer\","9"
"00770","祖海","Singer\","9"
var
i : integer;
ss : string;
begin
for i := 0 to Memo1.Lines.Count -1 do
begin
ss := '"'+IntToStr(Random(200))+'"';
SubGx.AddObject(ss,TObject(PChar(Memo1.Lines.Strings[i])));
ShowMessage(PChar(SubGx.Objects[i]));
end;
end;
烦请您看下,我头都大了,怎么部分记录就会出现多个字符或者少个"或者其他的什么字符的啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
var
i:integer;
begin
i:=Length(Source);
while Source[i]<>',' do dec(i);
Result:=Copy(Source,i+2,Length(Source)-i-2);
end;
function DStringListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result:=StrToInt(List.Strings[Index2])-StrToInt(List.Strings[Index1]) ;
if Result<0 then Result:=-1;
if Result>0 then Result:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
ss : string;
SubGx:TStringList;
begin
SubGx:=TStringList.Create;
for i := 0 to Memo1.Lines.Count -1 do
begin
ss := GetNumber(Memo1.Lines.Strings[i]);
SubGx.AddObject(ss,TObject(i));
end;
SubGx.CaseSensitive:=true;
SubGx.CustomSort(DStringListCompareStrings);
for i:=0 to SubGx.Count-1 do
begin
Memo2.Lines.Add(Memo1.Lines.Strings[Integer(SubGx.Objects[i])]); end;
SubGx.Free;
end;