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