关于字符串比较的问题
如果用comparestr函数,排序下来会是这样:
AAA1
AAA10
AAA2
AAA21
也就是说AAA2是大于AAA10的
我想要的是这样:
AAA1
AAA2
AAA10
AAA21
用什么函数能行呢?
[解决办法]
给你做了一下,还怪麻烦的,费了点事,不过还好做好了,使用两个memo控件测试了一下,可以使用,不过本来是要用TStringList的,可老出错,所以用了一下自定义字符串数组,看来你这个分真得全给我了
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,strutils;
type
TStr=array of string;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetEndValue(s:string):integer;
begin
result:=strtoint(copy(s,4,length(s)-3));
end;
function SortStr(list:Tstr):TStr;
var
ss:TStr;
i,j:integer;
d:string;
begin
ss:=copy(list);
for j:=1 to length(ss)-1 do
for i:=0 to length(ss)-j-1 do
if getendvalue(ss[i])>getendvalue(ss[i+1]) then
begin
d:=ss[i];
ss[i]:=ss[i+1];
ss[i+1]:=d;
end;
result:=copy(ss);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
list,list1:TStr;
begin
setlength(list,memo1.Lines.Count);
for i:=0 to memo1.Lines.Count-1 do
begin
list[i]:=memo1.Lines[i];
end;
list1:=copy(sortstr(list));
memo2.Lines.Clear;
for i:=0 to length(list1)-1 do
memo2.Lines.Add(list1[i]);
end;
end.