重复操作列表中的字符串
很多情况需要对表中的每一个字符串进行操作如改变字符串的大小写象这种重复操作可以用 for 循环来实现同时使用列表的整数类型的索引
以下代码对列表框的字符串进行重复操作当用户按下按钮时对列表框中的字符串进行大小写转换
procedure TFormButtonClick(Sender: TObject);
var
I: Integer;
begin
for I := to ListBoxItemsCount do
ListBoxItems[I] := UpperCase(ListBoxItems[I]);
end;
装载保存字符串列表
应用程序可以非常方便的把Delphi字符串列表存入文本文件或者从文本文件中重新装载(或装入另一个不同的列表)字符串列表有专门的方法处理这类操作
使用LoadFromFile方法从文件中装载字符串列表LoadFromFile从文本文件中把每一行字符串装入列表中
把列表保存在文件中使用SaveToFile方法使用时传递文件名的参数如果文件不存在SaveToFile将创建它否则将用列表覆盖现有文件内容
以下代码装入AUTOEXECBAT的文件并以AUTOEXECBAK为文件名进行备份
procedure TFormFormCreat(sender:TObject);
var
FileName:String;
begin
FileName:=C:\AUTOEXECBAT;
With Memo do
begin
LoadFromFile(FileName)
SaveToFile(ChangeFileExt(FileNameBAK));
end;
end;
创建新的字符串列表
大多数情况下应用程序使用的字符串列表是做为部件的某一部分因此不必创建列表但Delphi允许创建不依赖部件的字符串列表
值得注意的是程序创建的字符串列表必须在使用完之后释放列表所占用的内存空间有两种不同的情况需要处理一是程序以简单的方式创建使用释放字符串列表二是由程序创建在运行期间均可能使用在程序终止前释放这两种情况主要取决于是创建短期字符串列表还是长期字符串列表
短期字符串列表
短期字符串列表用于处理简单事物程序在同一处创建使用释放列表这是最安全的使用字符串列表的方法
因为字符串列表要为自己和它的字符串分配内存所以要用tryfinally对列表进行保护以确保发生异常后释放列表所占用的内存空间
创建短期字符串列表的基本步骤为
构造字符串列表对象
在tryfinally块中使用列表
在finally后释放列表空间
以下代码创建列表使用列表最后释放列表空间
procedure TFormButtonClick(Sender:Tobject);
var
TemList:TStrings;
begin
Templist:=TStringListCreate;
try
{ use the string list }
finally
TemplistFree;
end;
end;
长期字符串列表
如果要在程序运行的任何时候使用字符串列表则需在程序开始运行时就创建列表并在程序终止前释放
运行时创建字符串列表的步骤为
在程序主窗体对象的域中加入TStringsList类型的域
在主窗体的OnCreate事件中创建句柄该事件句柄在主窗体显示前运行
在创建事件句柄后创建字符串列表对象
在主窗体的OnDestroy事件创建句柄该事件句柄在主窗体消失之前运行
这样在程序运行过程中任何过程事件均能访问该字符串列表
以下代码在程序中加入了一个Clicklist的字符串列表用户每按一次鼠标键程序往Clicklist中加入一字符串程序结束前把该列表存入文件
unit Unit;
interface
uses WinTYpes WinProcs Classes Graphics Forms Controls Apps;
type
TForm = 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 field}
end;
var
Form: TForm;
implementation
{$R *DFM}
procedure TFormFormCreate(Sender: TObject);
begin
ClickList := TStringListCreate; {construct the list}
end;
procedure TFormFormDestroy(Sender: TObject);
begin
ClickListSaveToFile(ChangeFileExt(ApplicationExeName LOG));
{save the list}
ClickListFree; {destroy the list object}
end;
procedure TFormFormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X Y: Integer);
begin
ClickListAdd(Format(Click at (%d %d) [X Y])); {add a
string to the list}
end;
end