//TStringList 常用方法与属性:
var
  List: TStringList;
  i: Integer;
begin
  List := TStringList.Create;
  List.Add('Strings1');          {添加}
  List.Add('Strings2');
  List.Exchange(,);            {置换}
  List.Insert(,'Strings3');      {插入}
  i := List.IndexOf('Strings1');  {第一次出现的位置}
  List.Sort;                      {排序}
  List.Sorted := True;   {指定排序}
  List.Count;                    {总数}
  List.Text;                      {文本集合}
  List.Delete();                {删除, 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[]);  //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[]);  //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[]);  //bbb
  ShowMessage(List.ValueFromIndex[]);  //222
  ShowMessage(List.Values['bbb']);  //222   //ValueFromIndex 可以赋值:
  List.ValueFromIndex[] := '2';
  ShowMessage(List[]);  //bbb=2   //可以通过 Values 赋值:
  List.Values['bbb'] := '22';
  ShowMessage(List[]);  //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 TForm1.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; 自己的例子
一个编辑框内容为:A,B,内容以数组形势存入数据库


procedure TFrm_030101_dimsAdd.AddSJ;
var
  dims:IJSONDocument;
  List: TStringList;
  i:integer;
  arr:array of string; //定义动态string型数组
begin
  try
    List := TStringList.Create;
    List.CommaText := Trim(edt_tagkeys.text);
    setlength(arr,List.count);//使用时,定义数组长度
    for i := 0 to List.count-1 do
    begin
      arr[i]:= List[i];
    end;

    List.free;

    dims:=json([
          '_id',Trim(edt_id.text),
          'name',Trim(edt_name.Text),
          'tagKeys',arr
         ]);
  FMongoWire.Insert(dimsCol,dims);
  ShowMessage('添加成功!');
 except
    application.MessageBox('添加出错,请联系管理员!','系统提示',mb_OK+MB_ICONinformation);
 end;
end;

delphi----Tstringlist,将有符号的数据变成数组"aaa,bbb,ccc"---->list[0]=aaa,list[1]=bbb的更多相关文章

  1. (转载)Delphi TStringList的用法

    Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...

  2. Delphi TStringList的用法

    Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. TStringList 常用方法与属性: var List: TStringL ...

  3. delphi TStringList 用法详解

    转自: http://blog.163.com/you888@188/blog/static/67239619201472365642633/ delphi TStringList 用法详解 2014 ...

  4. delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery

    delphi中将一个ADOQuery查询的数据结果传递给一个动态生成的ADOQuery 2010-03-10 17:35 方法一: beginADOQuery:=TADOQuery.Create(Ap ...

  5. Delphi : TStringList的Find,IndexOf和Sort

    关键:Find要事先Sort排序,Indexof不用排序. TStringList内部查找相关的数据.待调试代码时才知道痛苦,浪费无数时间后,只得一步步跟踪,才发 现Find方法返回的Index总是错 ...

  6. 一个简单xml数据转换为数组的方法

    本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ...

  7. 假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」

    假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 ...

  8. C语言保证,0永远不是有效的数据地址,因此,返回址0可用来表示发生的异常事件

    C语言保证,0永远不是有效的数据地址,因此,返回址0可用来表示发生的异常事件

  9. 键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

    一.有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标 ...

随机推荐

  1. ContentObserver与DatasetObserver区别

        1. ContentObserver ContentObserver主要是通过Uri来监测特定的Databases的表,如果该Databases表有变动则会通知更新cursor中的数据. 如果 ...

  2. photoshop 动作 自己定义快捷键 播放选定的动作

    今天在制作一组效果图.要用到动作.而且是同一个动作,便在网上寻找"播放选定的动作"就是那个三角形播放button的快捷键. 预期这样会大大加快制作过程. 首先制作好动作. 然后,在 ...

  3. NOIP2007:纪念品分组

    #include<stdio.h> #include<stdlib.h> int a[100]; int main(){ int i,j,k,m,n,w; scanf(&quo ...

  4. OpenSSL生成证书详解 如何使用OpenSSL生成自签证书 转载

    原文:http://my.oschina.net/fajar/blog/425478 使用OpenSSL生成自签证书(亲测) 一,前言 读过我博客的小伙伴儿都知道,我一般在前言里面会提到为什么写这篇博 ...

  5. Linux 基础学习(第一节)

    IP地址的配置 配置临时IP地址 ifconfig etho 192.168.0.91 255.255.255.0 图形化下面配置IP地址: 重启网卡服务: shell环境配置网卡信息 必备的参数 关 ...

  6. js对象成员的访问

    var obj={0:1,1:'id'};//访问对象 obj['0'];//用[]来访问,不要用.的方式访问 -----对象与字符串的转换----- node.js JS对象和JSON字符串之间的转 ...

  7. Atitit.有分区情况下的表查询策略流程

    Atitit.有分区情况下的表查询策略流程 1. 分区表查询策略流程1 2. 常见数据库oracle mysql的分区查询语句1 2.1. 跨分区查询(oracle)1 2.2. 单分区查询 (ora ...

  8. [svc]jdk1.7.0_13(系列)下载url

    蛋疼了,这个版本,找了老半天没找到 最后是同事找到的 http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.g ...

  9. redis命令_SETNX

    SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在. 若给定的 key 已经存在,则 SETNX 不做任何动作. SETNX 是『SET if Not eXi ...

  10. 【Objective-C】01-Objective-C概述

    前言 目前来说,Objective-C(简称OC)是iOS开发的核心语言,在开发过程中也会配合着使用C语言.C++,OC主要负责UI界面,C语言.C++可用于图形处理.近来,流传Ruby.C#也可以开 ...