已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi应用程序经常要处理字符串列表,如组合框和列表框中的字符串,TMemo部件的文本行,屏幕支持的字体列表,TNotebook部件的tabs属性,字符串网格的行、列等等。虽然应用程序以不同的方法使用这些列表,但Delphi通过一个叫字符串列表(Tstrings)的对象提供统一的界面,并且在不同场合可相互转化。例如,可以在TMemo部件中编辑某一字符串,并把它当成列表框中列表项使用。在Delphi集成开发环境中也经常要使用字符串列表。如在Object Inspector窗体的取值栏中常列有Tstrings字符,双击该字符,将弹出字符列表编辑器,如图3.1,在编辑器中可进行编辑、加入、删除等操作 。在运行状态时也可以操作字符串列表,常见的字符串列表操作如下: 列表中操作字符串 装载、保存字符串列表 创建字符串列表 在字符串列表中加入对象本章将介绍字符串列表的常用操作及简单应用。 3.1 字符串列表的常用操作3.1.1 列表中操作字符串在Delphi应用程序中,经常要对列表中的字符串进行操作。例如,设计时修改字符串列表属性。常见的字符串操作如下: 计算列表中字符串数目 访问指定字符串 查找字符串的位置 往列表中加入字符串 删除列表中的字符串 在列表中移动字符串 复制一个完整的字符串列表 复制列表中的字符串3.1.1.1 计算列表中的字符串数目使用Count属性可计算列表中的字符串数目。Count是只读属性,用以指示列表中字符串列表数目。因为字符串列表是以零开始索引,因而Count比列表的最大索引数大一。例如,应用程序想计算当前屏幕支持的字体数目,可查找屏幕对象的字体列表,该列表包含了屏幕支持的所有字体的名字。FontCount:=Screen.Fonts.Count;3.1.1.2 访问指定字符串字符串列表有一个可索引的Strings属性,可象使用字符串数组一样使用Strings。例如,列表中第一个字符串为Strings0。因为Strings属性为字符串列表中最常用的属性,Strings属性可做为字符串列表的缺省属性,即使用时可省略Strings标识符。要访问字符串中的指定字符,可查找该字符的起始位置或索引。字符串数目是以零开始记数的。如果列表中有三个字符串,其索引范围为0.2。以下代码是等价的:Memol.Lines.Strings0:=This is the first line.; Memol.Lines0:=This is the first line.;3.1.1.3 查找字符串的位置Indexof方法可查找指定字符串的位置。Indexof有一个字符串类型的参数,方法返回列表中匹配字符串的位置。如果列表中无匹配字符串,将返回- 1。 Indexof方法只能查找完整字符串,即必须完全匹配整个字符串。如果只匹配部分字符串,必须编写相应代码。以下代码判定列表中是否有指定字符串:if FileListBox1.Items.IndexOf(AUTOEXEC.BAT) -1 thenbeginColor := clYellow;Label1.Caption := You are in the root directory!;end;3.1.1.4 在列表中加入字符串有两种方式往列表中加入字符串:可把字符串加到列表的最后,也可插入列表之中。要把字符串加至列表尾部,使用Add方法,把字符串作为参数传递。要把字符串插入列表中,使用Insert方法,传递两个参数:插入的位置和字符串。例如,要把“Three”插入至列表中的第三个位置,使用代码Insert(2,Three)。如果列表中的字符不到2个,Delphi将产生超出索引范围的异常(关于异常详见十二章)。3.1.1.5 在列表中移动字符串应用程序可以在列表中把指定字符串移至另一个位置,如果字符串与某个对象相连,则该对象与字符串同步移动。Move方法可实现字符串的移动,它有两个参数:现行位置和要移动的位置。以下代码把第三个字符串移至第五的位置:Move(2,4);3.1.1.6 删除列表中的字符串使用Delete方法可以删除指定的字符串。Delete的参数是指定字符串的位置,如果不知道字符串的位置,可使用Indexof方法。要删除字符串列表中所有的字符串,可使用Clear方法。以下代码删除列表框中的指定字符串:With ListBox1.Items dobeginif Indexof(bureaucracy)-1 thenDelete (Indexof(bureaucracy);end;3.1.1.7 复制完整的字符串列表把一个列表复制到另一个列表相当于把源列表赋值给目标列表,即使列表从属于不同的部件,Delphi也可以进行这种复制。复制列表将覆盖掉目标列表,如果要把源列表加到目标列表的尾部,使用Addstrings方法。以下代码分别为复制列表和连接列表:Outline1.Lines:=ComboBox1.Items;Outline1.Addstrings(ComboBox1.Items);3.1.1.8 重复操作列表中的字符串很多情况需要对表中的每一个字符串进行操作,如改变字符串的大小写。象这种重复操作可以用 for 循环来实现,同时使用列表的整数类型的索引。以下代码对列表框的字符串进行重复操作。当用户按下按钮时,对列表框中的字符串进行大小写转换。procedure TForm1.Button1Click(Sender: TObject);varI: Integer;beginfor I := 0 to ListBox1.Items.Count -1 doListBox1.ItemsI := UpperCase(ListBox1.ItemsI);end;3.1.2 装载、保存字符串列表应用程序可以非常方便的把Delphi字符串列表存入文本文件,或者从文本文件中重新装载(或装入另一个不同的列表),字符串列表有专门的方法处理这类操作。使用LoadFromFile方法从文件中装载字符串列表,LoadFromFile从文本文件中把每一行字符串装入列表中。把列表保存在文件中使用SaveToFile方法,使用时传递文件名的参数。如果文件不存在,SaveToFile将创建它,否则将用列表覆盖现有文件内容。以下代码装入AUTOEXEC.BAT的文件,并以AUTOEXEC.BAK为文件名进行备份。procedure TForm1.FormCreat(sender:TObject);varFileName:String;beginFileName:=C:AUTOEXEC.BAT;With Memo1 dobeginLoadFromFile(FileName)SaveToFile(ChangeFileExt(FileName,BAK);end;end;3.1.3 创建新的字符串列表大多数情况下,应用程序使用的字符串列表是做为部件的某一部分,因此不必创建列表,但Delphi允许创建不依赖部件的字符串列表。值得注意的是程序创建的字符串列表必须在使用完之后,释放列表所占用的内存空间。有两种不同的情况需要处理:一是程序以简单的方式创建、使用、释放字符串列表;二是由程序创建,在运行期间均可能使用,在程序终止前释放。这两种情况主要取决于是创建短期字符串列表还是长期字符串列表。3.1.3.1短期字符串列表短期字符串列表用于处理简单事物。程序在同一处创建、使用、释放列表。这是最安全的使用字符串列表的方法。因为字符串列表要为自己和它的字符串分配内存,所以要用try.finally对列表进行保护,以确保发生异常后释放列表所占用的内存空间。创建短期字符串列表的基本步骤为:1. 构造字符串列表对象;2. 在try.finally块中使用列表;3. 在finally后释放列表空间。以下代码创建列表、使用列表、最后释放列表空间:procedure TForm1.Button1Click(Sender:Tobject);varTemList:TStrings;beginTemplist:=TStringList.Create;try use the string list finallyTemplist.Free;end;end;3.1.3.2 长期字符串列表如果要在程序运行的任何时候使用字符串列表,则需在程序开始运行时就创建列表,并在程序终止前释放。运行时创建字符串列表的步骤为:1. 在程序主窗体对象的域中加入TStringsList类型的域;2. 在主窗体的OnCreate事件中创建句柄,该事件句柄在主窗体显示前运行;3. 在创建事件句柄后,创建字符串列表对象;4. 在主窗体的OnDestroy事件创建句柄,该事件句柄在主窗体消失之前运行。这样,在程序运行过程中,任何过程、事件均能访问该字符串列表。以下代码在程序中加入了一个Clicklist的字符串列表,用户每按一次鼠标键,程序往Clicklist中加入一字符串,程序结束前把该列表存入文件。unit Unit1;interfaceuses WinTYpes, WinProcs, Classes, Graphics, Forms, Controls, Apps;typeTForm1 = class(TForm)procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);private Private declarations public Public declarations ClickList: TStrings; declare the fieldend;varForm1: TForm1;implementation$R *.DFMprocedure TForm1.FormCreate(Sender: TObject);beginClickList := TStringList.Create; construct the listend;procedure TForm1.FormDestroy(Sender: TObject);beginClickList.SaveToFile(ChangeFileExt(Application.ExeName, .LOG);save the list
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋损坏保证协议书
- 房屋改造承包协议书
- 房屋滞销改造协议书
- 房屋租赁股东协议书
- 房屋装修补助协议书
- 房屋重建邻居协议书
- 房屋预约修理协议书
- 房租修建安全协议书
- 房租独家买卖协议书
- 手工加工的合同范本
- (2025)入团考试题目及答案
- 普通话实训与测试学习通超星期末考试答案章节答案2024年
- 2024秋国家开放大学《交通工程》形考任务1-4答案
- 电力电缆第二种工作票
- 交通事故死亡赔偿和解协议书
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 2024中国中信金融资产管理股份有限公司广西分公司招聘笔试冲刺题(带答案解析)
- (正式版)JBT 7122-2024 交流真空接触器 基本要求
- 理发服务协议书范文模板
- 类似商品和服务区分表-第十版(全文版)
- 肤癌的症状与切除治疗
评论
0/150
提交评论