万老师的博客里对TStringList这个类做了简明实用的描述,大家可以去看一下。
http://www.cnblogs.com/del/archive/2009/03/08/990040.html
而我写这个短篇的意图在于补充。
TStringList的Sorted属性是可以自动排序的,但是,它的排序是逐位比较的。
例子如下:
链表:
aList:TStringList;
待输入字符串
"0,100,1000,2000,10000"
你将Sorted属性置为true,然后直接用aList.commatext将字符串赋给aList
然后打印出来的结果是
"0,100,1000,10000,2000"
将sorted设置为true再一个一个add上去,结果也是一样的。
因为TStringList自带的排序功能,都是按照字符串来比的,并没有判断数据类型,也没有尝试将按分隔符读取的字符串转换为整数。很粗糙的一个排序。
所以,千万不要用于数字字符串的排序!
/* 2010-03-01 */
今天碰到一个问题,我写的一个类中有个private的TStrings类型的FAgency。
然而我发现我给它赋一个TStrings类型的值后,再从它那里取值,经常会报找不到数据。
检查发现,由于是后来新增的,没有给它create,而且赋值时直接等过去,不对,应该使用addstrings函数来赋值。取值也是一样的。
像今天碰到的不创建就使用,并且直接将一个TStrings的值赋给它,除非你将一个常驻内存的TStrings赋给它,否则在访问内存时是一定会报错的。看来我的编程习惯还是不好,需要改进。。。
分享到:
相关推荐
TStringList.pdf
希望它能刚接触TStringList的朋友帮上忙
sList:=TStringList.Create; sList.Text:=StringReplace(Astring,Dlmter,#13#10,[rfReplaceAll]); if (nPos>0) and (sList.Count>=nPos) then Result:=sList[nPos-1]; end; procedure TForm1.Button1Click(Sender:...
Delphi中的TStringList 排序算法实例代码,功能: 对保存在多个 TStringList 中的数据进行排序,支持按数字,日期,文字进行排序,支持顺序和倒序排序。 procedure MyStringsCustomSort(var aData: TSortData; ...
FileNamePathList := TStringList.Create; end; { if FileInUsed ('D:\Administrator\Documents\MyProjects\FileSearch\Win32\Debug\Project1.exe') then ShowMessage('File is in use.') else ShowMessage...
TmpPorts := TStringList.Create; try Index := 0; repeat ValueLen := 256; DataLen := 256; SetLength(ValueName, ValueLen); SetLength(Data, DataLen); ErrCode := RegEnumValue( KeyHandle, Index, ...
historylist:=tstringlist.Create; speedbutton1.Enabled:=false; speedbutton3.Enabled:=false; listbox1.Visible:=false; if fileexists('net.ini') then begin assignfile(mytextfile,'net.ini'); reset...
- Fixed: TStringList.IndexOfName optimization broke UniDAC's designtime editor - Fixed: "Find References" shortcut was assigned to "Find Local References" unless the search menu was opened - Added:...
Delphi中-TStringList-的详细用法
ssList := TStringList.Create; try if (nBase ) then begin end else begin if (sList.Count = 0) then begin for nIdx := 0 to num-1 do ssList.Add(a[nIdx]); end else begin for ...
在Edit中输入字符串,字符串用分号隔开,通过TStringList分割字符串,然后在ListView中显示
对TStringList控件中的数据进行排序
FTimeZoneList.Sorted := True; FDefaultTimeZone := nil; CollectTimeZone; end; procedure TTimeZones.DestoryTimeZones; var iCir: Integer; tempTimeZone: TTimeZone; begin for iCir := 0 to ...
delphi CustomSort 排序的一个简单demo 已经测试过可以正常排序,很简单可做参考
TStringList 常用方法与属性。包含,读入字符串、置换分隔符、类似的哈希表操作法、避免重复值、排序与倒排序等
- Added: TStringList.IndexOfName optimization - Fixed: FieldAddress optimization could fail if a published field name was also used in an ancestor 2015-02-15 (5.8) - Added: Compiler cleanup code ...
tsList:=TStringList.Create; //tsList.Add('查询结果'); //加入标题 s:=''; //加入字段名 for y := 0 to adoquery.fieldCount - 1 do begin s:=s+adoQuery.Fields.Fields[y].FieldName+#9 ; Application....
Delphi中TStringList的用法_构造简单数据库