(Delphi) TStringList的用法 构造简单数据库

delphi TStringList的用法
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。

常规的用法大家都知道,现在来讨论它的一些高级的用法。

先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValueFromIndex
先看第一个:CommaText。

怎么用呢?用代码说话:
const
constr :String = 'aaa,bbb,ccc,ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
maText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。

也就是说,maText := constr这一句的作用,就是把一个字符串以','为分割符,分段添加到TStrings中。

那么如果不是以','来分割,又该怎么做呢?现在看第二个例子。

使用Delimiter和DelimitedT ext。

const
constr :String = 'aaa\bbb\ccc\ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
可以看到,显示的效果和第一个例子是一模一样的。

解释一下:
Delimiter为分隔符,默认为:','。

DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后回把这个字符串按Delimiter的字符添加到TStrings中。

说到这里,有想起一个属性,QuoteChar。

其默认值为:'"'(不包括单引号)
有何用呢?看例子:
const
constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
显示出来的仍然是aaa bbb ccc ddd。

为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
再来看一个例子:
const
constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '\';
strs.QuoteChar := '|';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
显示出来的又是aaa bbb ccc ddd。

对比一下,应该不难明白吧?这个就不多说了,用得也不多。

但是还要多说一句,当Delimiter为:','而QuoteChar为:'"'时,DelimitedText和Comm aText是同等的。

最后要说的三个是:Names & Values & ValueFromIndex。

看看下面的代码:
const
constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
maText := constr;
for i := 0 to strs.Count-1 do
begin
ShowMessage(s[i]);
ShowMessage(strs.Values[s[i]]);
ShowMessage(strs.ValueFromIndex[i]); end;
end;
通过这个例子不难看出:
这个时候strs中的内容是:
0=aaa
1=bbb
2=ccc
3=ddd
而Names中则是:
1
2
3
在Values中则是:
aaa
bbb
ccc
ddd。

合集下载

DelphiListView基本用法大全[delphi]

DelphiListView基本用法大全[delphi]

DelphiListView基本⽤法⼤全[delphi] Delphi ListView基本⽤法⼤全//增加项或列(字段)ListView1.Clear;ListView1.Columns.Clear;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Items[0].Caption:='id';ListView1.Columns.Items[1].Caption:='type';ListView1.Columns.Items[2].Caption:='title';ListView1.Columns.Items[2].Width:=300;Listview1.ViewStyle:=vsreport;Listview1.GridLines:=true; //注:此处代码也可以直接在可视化编辑器中完成,也可写成以下这样beginwith listview1 dobeginColumns.Add;Columns.Add;Columns.Add;ViewStyle:=vsreport;GridLines:=true;columns.items[0].caption:='进程名';columns.items[1].caption:='进程ID';columns.items[2].caption:='进程⽂件路径';Columns.Items[0].Width:=100;Columns.Items[1].Width:=100;Columns.Items[2].Width:=150;endend;//增加记录with listview1.items.add dobegincaption:='1212';subitems.add('hh1');subitems.add('hh2');end;//删除listview1.items.delete(0);//从数据库表⾥读取数据写⼊ListviewvarTitem:Tlistitem; //此处⼀定要预定义临时记录存储变量.beginListView1.Items.Clear;with adoquery1 dobeginclose;sql.Clear;sql.Add('select spmc,jg,sl from kcxs');Open;ListView1.Items.Clear;while not eof dobeginTitem:=ListView1.Items.add;Titem.Caption:=FieldByName('spmc').Value;Titem.SubItems.Add(FieldByName('sl').Value);Titem.SubItems.Add(FieldByName('jg').Value);next;//删除ListView1.DeleteSelected;//如何取得ListView中选中⾏的某⼀列的值procedure TForm1.Button2Click(Sender: TObject);beginShowMessage(ListView1.Selected.SubItems.Strings[1]); //返回选中⾏第三列中的值end;showMessage(listView1.Selected.Caption); //返回选中⾏第⼀列的值.第1列的值: -->>> ListView1.Selected.Caption第i列的值(i>1):-->>> ListView1.Selected.SubItems.Strings[i]ListView1.Items.Item[1].SubItems.GetText); //取得listview某⾏某列的值Edit2.Text := listview1.Items[i].SubItems.strings[0]; //读第i⾏第2列返回选中⾏所有⼦列值.是以回车符分开的,你还要从中剥离出来你要的⼦列的值。

delphi列表视图组件(TListView)使用方法实例

delphi列表视图组件(TListView)使用方法实例

delphi列表视图组件(TListView)使用方法实例delphi列表视图组件(TListView)使用方法|实例来源:原创作者:村长录入时间:2010-04-22内容导读:列表视图与用TListBox 组件实现的列表框非常相似。

不同的是,列表视图可以让用户选择不同的显示方式,诸如大图标方式、小图标方式、简单列表方式和详细列表方式等。

Windows XP 的资列表视图组件(TListView)TListView 组件以多种形式显示列表的项目,如详细资料、小图标、大图标等形式表示列表中的项目。

列表视图与用TListBox 组件实现的列表框非常相似。

不同的是,列表视图可以让用户选择不同的显示方式,诸如大图标方式、小图标方式、简单列表方式和详细列表方式等。

Windows XP 的资源管理器就是一个典型的列表视图。

1.TListView 组件的典型用法列表视图的显示方式是通过ViewStyle 属性设置的。

当ViewStyle 属性设为vsReport 时,列表视图将以详细列表的方式显示。

以Windows XP 的资源管理器为例,当选中“查看”菜单上的“详细资料”命令时,列表视图中将显示文件或文件夹的图标、名称、字节数、类型和上次修改时间等信息。

以详细列表方式显示时,需要把Columns 属性设为需要的栏数,如果要给每一栏显示一个表头,必须把ShowColumnHeaders 属性设为True。

如果把ColumnClick 属性设为True,每一栏的表头就相当于一个按钮,单击这些按钮将触发OnColumnClick 事件。

单击“名称”这一栏表头,目录中的文件将按文件名的字母进行排序。

单击“大小”这个按钮,目录中的文件将以文件的字节数进行排序。

程序应当为列表视图中的每一项指定图标。

因此需要建立两个图像列表,一个用于大图标显示方式,另一个用于小图标显示方式(因为这两种方式下的图标大小是不同的),然后分别设置LargeImages属性和SmallImages 属性指定这两个图像列表。

[DELPHI]字符串列表使用

[DELPHI]字符串列表使用

[DELPHI]字符串列表使用◇[DELPHI]在FORM或其他容器上画线var x,y:array [0..50] of integer;迅速搜索4个选项后,我们发现单词meeting在其中3个选项中重复,而在选项A中出现了与meeting形似意异的动词meet。

仅从这4个选项,未听对话之前,我们可以得出两个结论:首先,对话的内容肯定与meeting有关;其次,选项A肯定不对,因为它与其它3个选项差别太大。

canvas.pen.color:=clred;canvas.pen.style:=psDash;1)住宿方式。

一般来讲,寄宿家庭最便宜(含住宿和三餐),大城市约900~1100加元,省会和中等城市约800-900元,小城市约700~800元。

自己租房、自己开伙费用其次。

住校吃食堂最贵。

香港理工大学是一所既充满活力又拥有骄人历史的大学。

理大毕业生的实用价值,更被雇主视为同侪之冠。

大学在追求卓越学术水平的同时,不断推陈出新,支持工商企业长远发展。

本文86留学网简单地介绍了香港理工大学部分专业及求学费用,希望对想去香港读研的同学有所帮助。

form1.canvas.moveto(trunc(x[i]),trunc(y[i]));我国语言博大精通,历史悠久,但是我们有时看书、看电视或看电影以及上网查资料的时候,总会遇到一些语句被误用、错用和滥用,在我们的学习中,错读字和语病也屡见不鲜,所以,我们要试着去调查,去分析,去研究,还要试着去杜绝这些现象才行,征求父母同意后,我就开始对我的作业本、街上的标牌以及书报刊进行调查、分析研究。

“0”在口语中有多种念法,最好区分的当然是zero,但是除此之外,还可以念作:nought,null,nil,nothing以及oh。

其中“oh”是较为常见的用法,一般在电话号码和房间号中最为多见,比如Room 102,就可以念作“room one oh two”。

而nought用于小数的情况较多,比如0.2可以读作“nought point two”。

delphi Tstrings TCollection类

delphi Tstrings TCollection类

delphi Tstrings TCollection类delphi Tstrings 类(2010-05-13 14:50:19)引用xiaojinet 的delphi Tstrings 类根据下标存取列表中的字符串是最常见的一种操作,用法示意如下:StringList1.Strings[0] := '字符串1';注意在Delphi中,几乎所有的列表的下标都是以0为底的,也就是说Strings[0]是列表中的第一个字符串。

另外,由于Strings属性是字符串列表类的默认属性,因此可以省略Strings,直接用下面的简便方法存取字符串:StringList1[0] := '字符串1';定位一个列表中特定的字符串的位置,可以使用IndexOf方法,IndexOf方法将会返回在字符串列表中的第一个匹配的字符串的索引值,如果没有匹配的字符串则返回-1。

比如我们可以使用IndexOf方法来察看特定文件是否存在于文件列表框中,代码示意如下:if FileListBox1.Items.IndexOf('TargetFileName') > -1...有一点不方便的是TStrings类没有提供一个方法可以查找除了第一个匹配字符串外其他同样匹配的字符串的索引,只能是自己遍历字符串列表来实现,这点不如C++中的模版容器类以及相关的模版算法强大和方便。

下面是一个遍历字符串列表的示意,代码遍历列表框中的所有字符串,并将其全部转化为大写的字符串:procedureTForm1.Button1Click(Sender: TObject);var Index:Integer;beginfor Index := 0 to ListBox1.Items.Count - 1 doListBox1.Items[Index] :=UpperCase(ListBox1.Items[Index]);end;前面我们看到了,要想向字符串列表中添加字符串,直接使用Add方法就可以了,但是Add方法只能将字符串加入到列表的末尾,要想在列表的指定位置添加字符串,需要使用Insert方法,下面代码在列表的索引为2的位置添加了字符串:StringList1.Insert(2, 'Three');如果要想将一个字符串列表中的所有字符串都添加到另一个字符串列表中,可以使用AddStrings方法,用法如下:StringList1.AddStrings(StringList2);要想克隆一个字符串列表的所有内容,可以使用Assign方法,例如下面的方法将Combox1中的字符串列表复制到了Memo1中:Memo1.Lines.Assign(ComboBox1.Items);要注意的是使用了Assign方法后,目标字符串列表中原有的字符串会全部丢失。

Delphi小谈之TList篇

Delphi小谈之TList篇

Delphi小谈之TList篇看了这里标题,大家可能以为我会谈TListBox控件,那就错了。

我要谈的是Delphi提供给我们的具有列表性质的类:TstringList、TList和TObjectList。

TstringList用来存放字符串,TList存放指针,而TObjectList则存放对象(Object)。

在我们使用Delphi 的过程中,有很多数据的存储是要靠数组解决的。

虽然Delphi现在已经支持了可变数组,不过总有那么点缺陷:我们不能在删除一个项后,使后边的项自动前靠。

因此,说说Delphi现成的List还是有价值的。

TstringList (Classes.pas)在TstringList里,那些String被一行一行地储存。

TstringList.Text返回全部的String。

如果第一、二、三行分别是\'aa\'、\'bb\'、\'cc\' 的话,那么Text 返回的是“\'aa\'+#13#10+\'bb\'+#13#10+\'cc\'+#13#10” (不包括双引号)。

所有的String都被TstringList用回车和换行符(#13#10)连接了起来。

如果依次向Text赋值的话,T ext就会被自动地分割成行储存在TstringList 里。

这充分地体现出TstringList的一个很实用的价值:它能让我们逐行处理String。

假如我们要操作第4行,只需操作TstringList[3]。

相信大家会问,TstringList明明是一个类,为什么能当数组那样子用呢?其实,我们在写TstringList[3]的时候,就是在写TstringList.Strings[3]。

Strings是TstringList的一个缺省属性。

数组性的缺省属性就是这样子使用的。

如果大家在编写类的时候要用到这么一个功能的话,可以参照如下方法:property AProperty[I: Integer] read *** write ***;default;。

delphi 中集合用法

delphi 中集合用法

Delphi 中集合用法1. 概述在 Delphi 中,集合(Collections)是一种用来存储和操作多个数据元素的数据结构。

集合的使用可以提高代码的可读性和可维护性,并且提供了各种方便的方法,用于访问、添加、删除和搜索集合中的元素。

本文将介绍 Delphi 中集合的基本用法,并深入探讨集合的常见操作和性能优化技巧。

2. 集合类型Delphi 提供了多种集合类型,包括:2.1. TListTList 是 Delphi 中最常用的集合类型之一,它可以存储不同类型的元素,并且提供了各种方法用于对元素进行操作。

可以使用 Add 方法向 TList 中添加元素,使用 Delete 方法删除元素,使用 Count 属性获取元素数量,使用 IndexOf 方法查找元素等。

2.2. TObjectListTObjectList 是 TList 的一个变体,它专门用于存储 TObject 类型的元素。

TObjectList 继承自 TList,并且添加了一些针对对象操作的特定方法。

例如,可以使用 OwnsObjects 属性来控制对象是否在列表销毁时一同被销毁。

2.3. TStringsTStrings 是一个用于存储字符串的集合类型。

它是 TList 的一个子类,但专门用于存储字符串类型的元素。

TStrings 提供了一些方便的方法,用于对字符串进行操作,例如 Add、Delete、Insert、IndexOf 等。

2.4. TQueue 和 TStackTQueue 和 TStack 分别是队列和栈的实现,它们分别按照先进先出(FIFO)和后进先出(LIFO)的原则存储和访问元素。

TQueue 提供了 Enqueue 方法用于将元素添加到队列尾部,使用 Dequeue 方法从队列头部获取并移除元素。

TStack 提供了Push 方法用于将元素推入栈顶,使用 Pop 方法从栈顶获取并移除元素。

2.5. TDictionaryTDictionary 是一个用于存储键值对的集合类型,类似于 Delphi 中的字典或映射。

delphi取得文件图标并在TListView中显示

delphi取得文件图标并在TListView中显示delphi取得文件图标并在TListView中显示时间:2011-5-30来源:yang 作者: peng点击: 92次技术要点:一、使用SHGetFileInfo函数获取指定扩展名的文件图标。

需要引用ShellAPI单元。

二、使用TStringList来保存扩展名与其图标的索引号。

当添加一个文件名至TListView后,我们已经取得了其图标,再次添加同样扩展名的文件时,不需再次获取其图标,只要从该TStringList中取得其图标索引号即可。

usesShellAPI;varIconList:TStringList;{ 实现获取图标及将图标添加到TImageList中的过程 }procedure ListView_SetItemImageIndex(Item: TListItem);varnIndex:Integer;Icon:TIcon;fileName:string;extName:string;sinfo:SHFILEINFO;beginif TListView(Item.ListView).SmallImages<>nil thenbeginfileName:=Item.Caption;extName:=ExtractFileExt(fileName);nIndex:=IconList.IndexOf(extName);if nIndex>-1 thenbeginnIndex:=Integer(IconList.Objects[nIndex]);Item.ImageIndex:=nIndex;end elsebeginFillChar(sinfo, SizeOf(sinfo),0);SHGetFileInfo(PChar(extName),FILE_ATTRIBUTE_NORMAL,si nfo,SizeOf(sInfo),SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON);if sinfo.hIcon>0 thenbeginIcon:=TIcon.Create;Icon.Handle:=sinfo.hIcon;nIndex:=TListView(Item.ListView).SmallImages.AddIcon(Icon );Icon.Free;Item.ImageIndex:=nIndex;IconList.AddObject(extName,TObject(nIndex));end;end;end;end;{ 测试过程 }procedure TForm1.Button1Click(Sender: TObject);varItem:TListItem;beginItem:=ListView1.Items.Add; Item.Caption:=‘c:\test.jpg‘; ListView_SetItemImageIndex(Item); end;{ 对IconList进行初始化及释放 } initializationIconList:=TStringList.Create; finalizationIconList.Free;end.。

DelphiTStringList的用法

DelphiTStringList的用法2011-07-06 18:21Delphi TStringList的用法TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。

TStringList 常用方法与属性:varList: TStringList;i: Integer;beginList := 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;//读入字符串varList: TStringList;beginList := TStringList.Create;maText := 'aaa,bbb,ccc,ddd';//相当于: List.Text := 'aaa' + #13#10 + 'bbb' + #13#10' + 'ccc' + '#13#10' + 'ddd';ShowMessage(IntT oStr(List.Count)); //4ShowMessage(List[0]); //aaaList.Free;end;相当于//置换分隔符varList: TStringList;beginList := TStringList.Create;List.Delimiter := '|';List.DelimitedText := 'aaa|bbb|ccc|ddd';ShowMessage(IntT oStr(List.Count)); //4ShowMessage(List[0]); //aaaList.Free;end;//类似的哈希表操作法varList: TStringList;beginList := TStringList.Create;List.Add('aaa=111');List.Add('bbb=222');List.Add('ccc=333');List.Add('ddd=444');ShowMessage(s[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=22List.Free;end;//避免重复值varList: TStringList;beginList := 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;beginResult := -AnsiCompareText(List[Index1], List[Index2]);end;procedure TForm1.Button1Click(Sender: TObject);varList: TStringList;beginList := 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 zzzend;现在来讨论它的一些高级的用法。

delphi tstringlist customsort的用法

在Delphi中,TStringList类的CustomSort方法用于对列表中的字符串进行排序。

CustomSort方法接受一个TStringListSortCompare 类型的参数,该参数是一个函数,用于定义字符串的比较规则。

下面是一个使用CustomSort方法的示例:```pascalprocedure TForm1.Button1Click(Sender: TObject);varList: TStringList;beginList := TStringList.Create;tryList.Add('Apple');List.Add('Banana');List.Add('Orange');List.Add('Grape');// 自定义比较函数constCompareRule: Integer = 1;procedure TForm1.StringCompare(const A, B: string): Integer;begincase (CompareRule) of1: begin// 按照字符串长度比较Result := CompareText(A, B, [siLength]);end;2: begin// 按照字符串字母顺序比较Result := CompareText(A, B, [si忽略Case]);end;3: begin// 按照字符串中第一个字符的ASCII值比较Result := Ord(A[1]) - Ord(B[1]);end;end;end;// 使用自定义比较函数进行排序List.CustomSort(StringCompare);// 显示排序后的结果Memo1.Lines.Add(List.Text);finallyList.Free;end;end;```在上面的示例中,我们首先创建了一个TStringList对象,并添加了一些字符串。

DelphiTStringList详解

Delphi TStringList 详解TStringList 拥有一个可变长度的字符串列表Type类型TStringList;说明TStringList是一个工具类的类型。

这是非常有用的列表处理多种。

列表中的项目在一个字符串可能被插入,移动和排序。

该清单可以建立由一串一串,或从脱离大串的文本文件,甚至是一个逗号加载。

TStringList是来自TStrings。

虽然你可以使用TStrings,不推荐使用,因为它是不完整的-某些方法是抽象的。

TStringList实现这些插入)抽象方法(清除,删除和。

我们将讨论的主要性能测试方法和TStringList,包括从派生的TStringsCount property返回数字的字符串列表中Capacity property设置或获取字符串列表的当前容量。

您将管理这个性能原因的能力。

Strings property获取或更新列表中的指定索引的字符串(第一个列表项的索引为0)。

请注意,Strings属性是默认属性。

这意味着你可以使用它没有具体说明其名称:myName := [4];相当于:myName := names[4];Text property通过设置或获取一个大的字符串列表。

该字符串会与一个回车符和换行符的组合(CRLF 的)结束每个字符串。

从一个有用的可视对象,可容纳多行文本加载。

CommaText property通过获取或设置一个大的字符串列表。

此字符串将有由逗号隔开的字符串列表。

这是从文本电子表格导出加载有用。

当获得,如果一个字符串包含嵌入的空格,将用双引号。

DelimitedText property获取或设置大串名单通过。

这串名单将通过分隔字符串分隔符值(默认是逗号)。

字符串包含嵌入的空格必须封闭在QuoteChar(默认是“)。

QuoteChar property使用字符串用来括有嵌入的空格时DelimitedText。

Delimiter property用于在使用单独的字符串DelimitedText。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档