程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第三章-字符串列表及應用(一)(2)

第三章-字符串列表及應用(一)(2)

編輯:Delphi

3.1.2 裝載、保存字符串列表 

應用程序可以非常方便的把Delphi字符串列表存入文本文件,或者從文本文件中重新裝載(或裝入另一個不同的列表),字符串列表有專門的方法處理這類操作。

使用LoadFromFile方法從文件中裝載字符串列表,LoadFromFile從文本文件中把每一行字符串裝入列表中。

把列表保存在文件中使用SaveToFile方法,使用時傳遞文件名的參數。如果文件不存在,SaveToFile將創建它,否則將用列表覆蓋現有文件內容。

以下代碼裝入AUTOEXEC.BAT的文件,並以AUTOEXEC.BAK為文件名進行備份。 

procedure TForm1.FormCreat(sender:TObject);

var

FileName:String;

begin

FileName:='C:\AUTOEXEC.BAT';

With Memo1 do

begin

LoadFromFile(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);

var

TemList:TStrings;

begin

Templist:=TStringList.Create;

try

{ use the string list }

finally

Templist.Free;

end;

end; 

3.1.3.2 長期字符串列表 

如果要在程序運行的任何時候使用字符串列表,則需在程序開始運行時就創建列表,並在程序終止前釋放。

運行時創建字符串列表的步驟為:

1. 在程序主窗體對象的域中加入TStringsList類型的域;

2. 在主窗體的OnCreate事件中創建句柄,該事件句柄在主窗體顯示前運行;

3. 在創建事件句柄後,創建字符串列表對象;

4. 在主窗體的OnDestroy事件創建句柄,該事件句柄在主窗體消失之前運行。

這樣,在程序運行過程中,任何過程、事件均能訪問該字符串列表。

以下代碼在程序中加入了一個Clicklist的字符串列表,用戶每按一次鼠標鍵,程序往Clicklist中加入一字符串,程序結束前把該列表存入文件。 

unit Unit1; 

interface 

uses WinTYpes, WinProcs, Classes, Graphics, Forms, Controls, Apps; 

type

TForm1 = 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

Form1: TForm1; 

implementation 

{$R *.DFM} 

procedure TForm1.FormCreate(Sender: TObject);

begin

ClickList := TStringList.Create; {construct the list}

end; 

procedure TForm1.FormDestroy(Sender: TObject);

begin

ClickList.SaveToFile(ChangeFileExt(Application.ExeName, '.LOG'));

{save the list}

ClickList.Free; {destroy the list object}

end; 

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

ClickList.Add(Format('Click at (%d, %d)', [X, Y])); {add a

string to the list}

end; 

end.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved