林萧 發表於 2020-11-4 15:00:00

Delphi - TStringList 用法详解

<p>delphi TStringList 用法详解</p>
<p>//TStringList 常用方法与属性&nbsp;:<br>var<br>&nbsp; List: TStringList;<br>&nbsp; i: Integer;<br>begin<br>&nbsp; List := TStringList.Create;<br>&nbsp; List.Add('Strings1');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {添加}<br>&nbsp; List.Add('Strings2');<br>&nbsp; List.Exchange(0,1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {置换}<br>&nbsp; List.Insert(0,'Strings3');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {插入}<br>&nbsp; i := List.IndexOf('Strings1');&nbsp; {第一次出现的位置}<br>&nbsp; List.Sort;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {排序}<br>&nbsp; List.Sorted := True; &nbsp; {指定排序}<br>&nbsp; List.Count;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {总数}<br>&nbsp; List.Text;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {文本集合}<br>&nbsp; List.Delete(0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {删除, 0是第一个数据}<br>&nbsp; List.LoadFromFile('c:/tmp.txt');{打开}<br>&nbsp; List.SaveToFile('c:/tmp.txt');&nbsp; {保存}<br>&nbsp; List.Clear;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {清空}<br>&nbsp; List.Free;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {释放}<br>end;</p>
<p>&nbsp;</p>
<hr>
<p><br><br>//读入字符串<br>var<br>&nbsp; List: TStringList;<br>begin<br>&nbsp; List := TStringList.Create;<br>&nbsp; List.CommaText := 'aaa,bbb,ccc,ddd';<br>//相当于: List.Text := 'aaa' + #13#10 + 'bbb' + #13#10' + 'ccc' + '#13#10' + 'ddd';<br><br>&nbsp; ShowMessage(IntToStr(List.Count)); //4<br>&nbsp; ShowMessage(List); //aaa<br><br>&nbsp; List.Free;<br>end;</p>
<hr>
<p><br><br>//置换分隔符<br>var<br>&nbsp; List: TStringList;<br>begin<br>&nbsp; List := TStringList.Create;<br>&nbsp; List.Delimiter := '|';<br>&nbsp; List.DelimitedText := 'aaa|bbb|ccc|ddd';<br><br>&nbsp; ShowMessage(IntToStr(List.Count)); //4<br>&nbsp; ShowMessage(List); //aaa<br><br>&nbsp; List.Free;<br>end;</p>
<hr>
<p><br><br>//类似的哈希表操作法<br>var<br>&nbsp; List: TStringList;<br>begin<br>&nbsp; List := TStringList.Create;<br><br>&nbsp; List.Add('aaa=111');<br>&nbsp; List.Add('bbb=222');<br>&nbsp; List.Add('ccc=333');<br>&nbsp; List.Add('ddd=444');<br><br>&nbsp; ShowMessage(List.Names); //bbb<br>&nbsp; ShowMessage(List.ValueFromIndex); //222<br>&nbsp; ShowMessage(List.Values['bbb']); //222<br><br>//ValueFromIndex 可以赋值:<br>&nbsp; List.ValueFromIndex := '2';<br>&nbsp; ShowMessage(List); //bbb=2<br><br>//可以通过 Values 赋值:<br>&nbsp; List.Values['bbb'] := '22';<br>&nbsp; ShowMessage(List); //bbb=22<br><br>&nbsp; List.Free;<br>end;</p>
<p>&nbsp;</p>
<hr>
<p>//避免重复值<br>var<br>&nbsp; List: TStringList;<br>begin<br>&nbsp; List := TStringList.Create;<br><br>&nbsp; List.Add('aaa');<br><br>&nbsp; List.Sorted := True; //需要先指定排序<br>&nbsp; List.Duplicates := dupIgnore; //如有重复值则放弃<br><br>&nbsp; List.Add('aaa');<br><br>&nbsp; ShowMessage(List.Text); //aaa<br><br>//Duplicates 有3个可选值:<br>//dupIgnore: 放弃;<br>//dupAccept: 结束;<br>//dupError: 提示错误.<br><br>&nbsp; List.Free;<br>end;</p>
<p>&nbsp;</p>
<hr>
<p><br><br>//排序与倒排序<br>{排序函数}<br>function DescCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;<br>begin<br>&nbsp; Result := -AnsiCompareText(List, List);<br>end;<br><br>procedure&nbsp;TForm&nbsp;1.Button1Click(Sender: TObject);<br>var<br>&nbsp; List: TStringList;<br>begin<br>&nbsp; List := TStringList.Create;<br><br>&nbsp; List.Add('bbb');<br>&nbsp; List.Add('ccc');<br>&nbsp; List.Add('aaa');<br><br>//未排序<br>&nbsp; ShowMessage(List.Text); //bbb ccc aaa<br><br>//排序<br>&nbsp; List.Sort;<br>&nbsp; ShowMessage(List.Text); //aaa bbb ccc<br><br>//倒排序<br>&nbsp; List.CustomSort(DescCompareStrings); //调用排序函数<br>&nbsp; ShowMessage(List.Text); //ccc bbb aaa<br><br>//假如:<br>&nbsp; List.Sorted := True;<br>&nbsp; List.Add('999');<br>&nbsp; List.Add('000');<br>&nbsp; List.Add('zzz');<br>&nbsp; ShowMessage(List.Text); //000 999 aaa bbb ccc zzz<br>end;</p><br><br>
来源:https://www.cnblogs.com/sunylat/p/13925993.html
頁: [1]
查看完整版本: Delphi - TStringList 用法详解