首页 > 编程语言 > 详细

结合几个delphi例子,自己写的array结构体排序,用了一天的时间才写好

时间:2021-02-23 23:32:59      阅读:46      评论:0      收藏:0      [点我收藏+]
结合几个delphi例子,自己写的array结构体排序,用了一天的时间才写好 unit Unit3; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,types; type TForm3 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} uses System.Generics.Collections, System.Generics.Defaults; var Values: array[0..3] of string =( ‘Carol‘ ,‘Bob‘, ‘Alice‘, ‘Dave‘); //为什么不能把这句放在button.click里面 S: string; //记录用于示例代码。 type TMyRecord = record I: Integer; S: string; end; //按TMYRECORD的I字段递增顺序排序的示例 //比较类,以降序对TMyRecord的I字段进行排序 type TMyRecordComparer1 = class(TComparer) public function Compare(const Left, Right: TMyRecord): Integer; override; end; function TMyRecordComparer1.Compare(const Left, Right: TMyRecord): Integer; begin Result := (Left.I - Right.I ); //Left.I,Right.I交换位置,排序的结果也就不一样 end; //样例程序 var Valuesye: array of TMyRecord ; R: TMyRecord; rye:TMyRecord; type //这里不能少了ytpe TArr = record //record class procedure ArrayAdd(var Arr: TArray; const item: T); static; //结构中的 class 方法必须是 static 的 end; //可能这个是type的结束号 { TArr } class procedure TArr.ArrayAdd(var Arr: TArray; const item: T); begin SetLength(Arr, Length(Arr)+1); Arr[High(Arr)] := item; end; procedure TForm3.Button1Click(Sender: TObject); begin TArray.Sort(Values); for S in Values do Memo1.Lines.Add(S); end; procedure TForm3.Button2Click(Sender: TObject); var chen:TArr; begin rye.I:=0; rye.S:=‘叶会严‘; //TArr.ArrayAdd(Valuesye,rye); FillChar(Valuesye,sizeof(Valuesye),0); //这里清空缓存数据,生成 p.ScoreList=() setlength(Valuesye,2); //设置数组的长度 //这种方法得到:p.ScoreList=((course=‘数学‘;score=78.5),(course=‘语文‘;score=70)) 采用截断模式 Valuesye[0].s:=‘语文‘; Valuesye[0].i:=3; Valuesye[1].s:=‘数学‘; Valuesye[1].i:=2; SetLength(Valuesye, Length(Valuesye)+1); Valuesye[High(Valuesye)] := rye; TArray.Sort(Valuesye, TMyRecordComparer1.Create); //之前这里出错了,是因为我把 网上的Values改成了Valuesye for R in Valuesye do //之前这里出错了,是因为我把网上的 Values改成了Valuesye Memo1.Lines.Add(Format(‘%d:%s‘, [R.I, R.S])); ShowMessageFmt(‘%d,%s‘, [Valuesye[0].i, Valuesye[0].s]); //abc,123 end; procedure TForm3.Button3Click(Sender: TObject); begin FillChar(Valuesye,sizeof(Valuesye),0); //这里清空缓存数据,生成 p.ScoreList=() setlength(Valuesye,2); //这种方法得到:p.ScoreList=((course=‘数学‘;score=78.5),(course=‘语文‘;score=70)) 采用截断模式 Valuesye[0].s:=‘语文‘; Valuesye[0].i:=3; Valuesye[1].s:=‘数学‘; Valuesye[1].i:=2; end; end.

结合几个delphi例子,自己写的array结构体排序,用了一天的时间才写好

原文:https://www.cnblogs.com/yehuiyan/p/14438375.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!