效果圖如下:
方法很簡單,只要從TStringList繼承,覆蓋sort方法即可,詳見代碼吧:
unit Unit9; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, frxClass; type TSortType = (stASC = 1, stDESC = -1); TNumberSortList = class(TStringList) private FSortType: TSortType; function NumberSort(List: TStringList; Index1, Index2: Integer): Integer; public constructor Create; procedure Sort; override; property SortType: TSortType read FSortType write FSortType default stASC; end; TForm9 = class(TForm) Button2: TButton; ListBox1: TListBox; Button1: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form9: TForm9; implementation {$R *.dfm} { TNumberSortList } constructor TNumberSortList.Create; begin inherited Create; FSortType := stASC; end; function TNumberSortList.NumberSort(List: TStringList; Index1, Index2: Integer): Integer; var vSort, Value1, Value2: Integer; begin Value1 := StrToInt(List[Index1]); Value2 := StrToInt(List[Index2]); vSort := Integer(FSortType); if Value1 < Value2 then Result := 0 - vSort else if Value1 > Value2 then Result := vSort else Result := 0; end; function NumberListCompareStrings(List: TStringList; Index1, Index2: Integer): Integer; begin Result := TNumberSortList(List).NumberSort(List, Index1, Index2); end; procedure TNumberSortList.Sort; begin CustomSort(NumberListCompareStrings); end; function NumberSort(List: TStringList; Index1, Index2: Integer): Integer; var Value1, Value2: Integer; begin Value1 := StrToInt(List[Index1]); Value2 := StrToInt(List[Index2]); if Value1 < Value2 then Result := -1 else if Value1 > Value2 then Result := 1 else Result := 0; end; procedure TForm9.Button1Click(Sender: TObject); var vList: TNumberSortList; i: Integer; begin vList := TNumberSortList.Create; vList.SortType := stDESC; try for i := 0 to 50 do vList.Add(IntToStr(i)); vList.Sort; ListBox1.Items.Clear; for i := 0 to vList.Count - 1 do ListBox1.Items.Add(vList.Strings[i]); finally vList.Free; end; end; procedure TForm9.Button2Click(Sender: TObject); var vList: TStringList; i: Integer; begin vList := TNumberSortList.Create; try for i := 0 to 50 do vList.Add(IntToStr(i)); vList.Sort; ListBox1.Items.Clear; for i := 0 to vList.Count - 1 do ListBox1.Items.Add(vList.Strings[i]); finally vList.Free; end; end; end.
繼續運行 🥋 回憶上次內容 上上次 真寫了 萬行 代碼 這 萬行 代碼 都是寫在 明面 上的 這次 使用git命令 下載了 github上面的倉庫
在Vue中,style scope是一個特性,它可以防止組件的樣式影響到其他組件,從而減少樣式衝突。這個特性通過在生成的CSS選擇器中自動添加一個屬性(通常是data-v-hash)來實現。 如果你遇到了style scope導致樣式無法被
DevExtreme擁有高性能的HTML5 / JavaScript小部件集合,使您可以利用現代Web開發堆棧(包括React,Angular,ASP.NET Core,jQuery,Knockout等)構建交互式的Web應用程序。從Ang
本文分享自華爲雲社區《【Spring Boot 源碼學習】RedisAutoConfiguration 詳解》,作者: Huazie。 引言 帶大家分析 Spring Boot 內置的有關 Redis 的自動配置類【RedisAutoCo
本教程將引導您使用Spring Annotator實現Spring控制器,標準Java類被添加到搭建項目中,Spring Annotator Spring啓用Java類。 雖然本教程的重點是Spring控制器,但是Spring Annota
本文分享自華爲雲社區《10分鐘搞懂各種內存溢出案例!!(含完整源碼,建議收藏)》,作者:冰 河。 作爲程序員,多多少少都會遇到一些內存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個假程序員!哈哈,開個玩笑。今天,我
文|苟振東(花名:盛知) Koupleless 項目 committer 螞蟻集團技術專家 本文 5789 字 閱讀 12 分鐘 本篇文章屬於 Koupleless 進階系列文章第二篇,默認讀者對 Koupleless 的基礎概念、能力都
1. 引言 在現代軟件開發過程中,性能優化和故障排查是保證應用穩定運行的關鍵任務之一。Java作爲一種廣泛使用的編程語言,其生態中湧現出了許多優秀的監控和診斷工具,諸如:SkyWalking、Zipkin等,它們幫助開發者和運維人員
· 前言 · 在國內,公網服務器與本地服務器的通信一直是個難題,本地服務器因爲IP是動態變化的,公網服務器沒辦法將請求發送給本地服務器。爲了解決這個問題,所以採用WebSocket協議替換Http協議。爲了實現請求等待,使用Gu
在這裏分享一下通過拖取 DataCube 代碼審計後發現的一些漏洞,包括前臺的文件上傳,信息泄露出賬號密碼,後臺的文件上傳。當然還有部分 SQL 注入漏洞,因爲 DataCube 採用的是 SQLite 的數據庫,所以SQL 注入相對來說顯
轉載自劉茫茫看山 問題背景 某天我們的租戶反饋數據庫連接缺少必要的驅動,我們通過日誌查看確實是缺少部分數據庫的驅動,因爲DolphinScheduler默認只帶了Oracle和MySQL的驅動,並且需要將pom文件中的test模式去掉纔可以
鴻蒙原生應用再新丁!新華社 入局鴻蒙 來自 #HarmonyOS# 微博5月27日消息 #鴻蒙千帆起#新華社客戶端完成鴻蒙原生應用核心版本開發,將實現不同使用場景下更加智能、精準、及時的要聞推送,以及主流價值的全場景覆蓋和高效傳播!與此同
記一次攻防演練中幸運的從若依弱口令到後臺getshell的過程和分析。 0x01 漏洞發現 首先,我會先把目標的二級域名拿去使用搜索引擎來搜索收集到包含這個目標二級域名的三級域名或者四級域名的網站。 這樣子可以快速的定位到你所要測試的漏洞