风吹麦麦浪 發表於 2019-10-12 14:59:00

delphi TStringList 用法详解

<p>//TStringList 常用方法与属性 :</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
i: Integer;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Strings1</span><span style="color: rgba(128, 0, 0, 1)">'</span>);         <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">添加</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Strings2</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Exchange(</span><span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 128, 1)">1</span>);             <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">置换</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Insert(</span><span style="color: rgba(128, 0, 128, 1)">0</span>,<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Strings3</span><span style="color: rgba(128, 0, 0, 1)">'</span>);      <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">插入</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
i :</span>= List.IndexOf(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Strings1</span><span style="color: rgba(128, 0, 0, 1)">'</span>);<span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">第一次出现的位置</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Sort;                      </span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">排序</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Sorted :</span>= True;   <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">指定排序</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Count;                     </span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">总数</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Text;                      </span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">文本集合</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Delete(</span><span style="color: rgba(128, 0, 128, 1)">0</span>);               <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">删除, 0是第一个数据</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.LoadFromFile(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">c:/tmp.txt</span><span style="color: rgba(128, 0, 0, 1)">'</span>);<span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">打开</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.SaveToFile(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">c:/tmp.txt</span><span style="color: rgba(128, 0, 0, 1)">'</span>);<span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">保存</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Clear;                     </span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">清空</span><span style="color: rgba(0, 128, 0, 1)">}</span><span style="color: rgba(0, 0, 0, 1)">
List.Free;                      </span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">释放</span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;





</span>//<span style="color: rgba(0, 0, 0, 1)">读入字符串
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;
List.CommaText :</span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa,bbb,ccc,ddd</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
</span>//相当于: List.Text := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa</span><span style="color: rgba(128, 0, 0, 1)">'</span> + #<span style="color: rgba(128, 0, 128, 1)">13</span>#<span style="color: rgba(128, 0, 128, 1)">10</span> + <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">bbb</span><span style="color: rgba(128, 0, 0, 1)">'</span> + #<span style="color: rgba(128, 0, 128, 1)">13</span>#<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> + </span><span style="color: rgba(128, 0, 0, 1)">'</span>ccc<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> + </span><span style="color: rgba(128, 0, 0, 1)">'</span>#<span style="color: rgba(128, 0, 128, 1)">13</span>#<span style="color: rgba(128, 0, 128, 1)">10</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)"> + </span><span style="color: rgba(128, 0, 0, 1)">'</span>ddd<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">;</span>
<span style="color: rgba(0, 0, 0, 1)">
ShowMessage(IntToStr(List.Count)); </span>//<span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">
ShowMessage(List[</span><span style="color: rgba(128, 0, 128, 1)">0</span>]); //<span style="color: rgba(0, 0, 0, 1)">aaa

List.Free;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;



</span>//<span style="color: rgba(0, 0, 0, 1)">置换分隔符
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;
List.Delimiter :</span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">|</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
List.DelimitedText :</span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa|bbb|ccc|ddd</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;

ShowMessage(IntToStr(List.Count)); </span>//<span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">
ShowMessage(List[</span><span style="color: rgba(128, 0, 128, 1)">0</span>]); //<span style="color: rgba(0, 0, 0, 1)">aaa

List.Free;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;



</span>//<span style="color: rgba(0, 0, 0, 1)">类似的哈希表操作法
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;

List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa=111</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">bbb=222</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">ccc=333</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">ddd=444</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);

ShowMessage(List.Names[</span><span style="color: rgba(128, 0, 128, 1)">1</span>]); //<span style="color: rgba(0, 0, 0, 1)">bbb
ShowMessage(List.ValueFromIndex[</span><span style="color: rgba(128, 0, 128, 1)">1</span>]); //<span style="color: rgba(128, 0, 128, 1)">222</span><span style="color: rgba(0, 0, 0, 1)">
ShowMessage(List.Values[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">bbb</span><span style="color: rgba(128, 0, 0, 1)">'</span>]); //<span style="color: rgba(128, 0, 128, 1)">222</span>

//<span style="color: rgba(0, 0, 0, 1)">ValueFromIndex 可以赋值:
List.ValueFromIndex[</span><span style="color: rgba(128, 0, 128, 1)">1</span>] := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">2</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
ShowMessage(List[</span><span style="color: rgba(128, 0, 128, 1)">1</span>]); //bbb=<span style="color: rgba(128, 0, 128, 1)">2</span>

//<span style="color: rgba(0, 0, 0, 1)">可以通过 Values 赋值:
List.Values[</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">bbb</span><span style="color: rgba(128, 0, 0, 1)">'</span>] := <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">22</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
ShowMessage(List[</span><span style="color: rgba(128, 0, 128, 1)">1</span>]); //bbb=<span style="color: rgba(128, 0, 128, 1)">22</span><span style="color: rgba(0, 0, 0, 1)">

List.Free;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span>//<span style="color: rgba(0, 0, 0, 1)">避免重复值
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;

List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);

List.Sorted :</span>= True; //<span style="color: rgba(0, 0, 0, 1)">需要先指定排序
List.Duplicates :</span>= dupIgnore; //<span style="color: rgba(0, 0, 0, 1)">如有重复值则放弃

List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);

ShowMessage(List.Text); </span>//<span style="color: rgba(0, 0, 0, 1)">aaa

</span>//<span style="color: rgba(0, 0, 0, 1)">Duplicates 有3个可选值:
</span>//<span style="color: rgba(0, 0, 0, 1)">dupIgnore: 放弃;
</span>//<span style="color: rgba(0, 0, 0, 1)">dupAccept: 结束;
</span>//<span style="color: rgba(0, 0, 0, 1)">dupError: 提示错误.

List.Free;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;


</span>//<span style="color: rgba(0, 0, 0, 1)">排序与倒排序
</span><span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">排序函数</span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> DescCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
Result :</span>= -<span style="color: rgba(0, 0, 0, 1)">AnsiCompareText(List, List);
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span> TForm <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.Button1Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
List: TStringList;
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
List :</span>=<span style="color: rgba(0, 0, 0, 1)"> TStringList.Create;

List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">bbb</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">ccc</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">aaa</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);

</span>//<span style="color: rgba(0, 0, 0, 1)">未排序
ShowMessage(List.Text); </span>//<span style="color: rgba(0, 0, 0, 1)">bbb ccc aaa

</span>//<span style="color: rgba(0, 0, 0, 1)">排序
List.Sort;
ShowMessage(List.Text); </span>//<span style="color: rgba(0, 0, 0, 1)">aaa bbb ccc

</span>//<span style="color: rgba(0, 0, 0, 1)">倒排序
List.CustomSort(DescCompareStrings); </span>//<span style="color: rgba(0, 0, 0, 1)">调用排序函数
ShowMessage(List.Text); </span>//<span style="color: rgba(0, 0, 0, 1)">ccc bbb aaa

</span>//<span style="color: rgba(0, 0, 0, 1)">假如:
List.Sorted :</span>=<span style="color: rgba(0, 0, 0, 1)"> True;
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">999</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">000</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
List.Add(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">zzz</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
ShowMessage(List.Text); </span>//<span style="color: rgba(128, 0, 128, 1)">000</span> <span style="color: rgba(128, 0, 128, 1)">999</span><span style="color: rgba(0, 0, 0, 1)"> aaa bbb ccc zzz
</span><span style="color: rgba(0, 0, 255, 1)">end</span>;</pre>
</div>
<p>&nbsp;</p>
<p><br>原文链接:https://blog.csdn.net/sunylat/article/details/24886695</p><br><br>
来源:https://www.cnblogs.com/hhmm99/p/11661610.html
頁: [1]
查看完整版本: delphi TStringList 用法详解