📄 strlist.pas
字号:
{==============================================================================
来自www.expert-exchange.com
==============================================================================}
unit StrList;
interface
type
TStrList = Class(TObject)
private
vList: Array of String;
ListLn: Integer;
function getstring(index: integer): string;
procedure setstring(index: integer; const Value: string);
public
constructor Create;
destructor Destroy;override;
procedure SaveToFile(Filename: String);
function LoadFromFile(Filename: String):boolean;
procedure Add(Text: String);
function Text: String;
function Strings(Index: Integer): String;
procedure Clear;
function Find(TextFind: String; var Index: Integer): Boolean;
procedure Delete(Index: Integer);
function Count: Integer;
procedure Replace(Index: Integer; Input: String);
property item[index:integer]:string read getstring write setstring;default;
end;
implementation
constructor TStrList.Create;
begin
ListLn := 0;
SetLength(vList, ListLn + 1);
end;
destructor TStrList.Destroy;///();override;
begin
Listln := 0;
Clear;
end;
function TStrList.LoadFromFile(FileName:string):boolean;
var
F: TextFile;
T: String;
begin
Clear;
AssignFile(F, FileName);
{$I-}
Reset(F);
{$I+}
result:=true;
if IOResult <> 0 then
begin
result:=false;
exit;
end
else
begin
while not Eof(F) do
begin
Readln(F, T);
If T <> '' then
begin
if pos(';',T)<>1 then
begin
SetLength(vList, ListLn + 1);
vList[ListLn] := T;
Inc(ListLn);
end;
end
end; end;
CloseFile(F);
end;
procedure TStrList.SaveToFile(Filename: String);
var
F: TextFile;
i: Integer;
begin
AssignFile(F, Filename);
ReWrite(F);
for i := 0 to ListLn-1 do
WriteLn(F, vList[i] + #13);
CloseFile(F);
end;
procedure TStrList.Add(Text: String);
begin
SetLength(vList, ListLn + 1);
vList[Listln] := Text;
Inc(Listln);
end;
procedure TStrList.Clear;
var
i: Integer;
begin
For i := 0 to ListLn-1 do
vList[i] := '';
Listln := 0;
end;
function TStrList.Find(TextFind: String; var Index: Integer): Boolean;
var
i: Integer;
begin
result:=true;
For i := 0 to ListLn do
If Copy(vList[i], 1, Length(TextFind)) = TextFind then
begin
Index := i;
Result := True;
Exit;
end
else
Result := False;
end;
procedure TStrList.Delete(Index: Integer);
var
TempArray: array of String;
i, ix: Integer;
Begin
If (Index < 0) or (Index >= ListLn) or (ListLn = 0) then Exit;
Dec(ListLn);
SetLength(TempArray, ListLn);
ix := 0;
for i := 0 to ListLn do
If i <> Index then
begin
TempArray[ix] := vList[i];
Inc(ix);
end;
SetLength(vList, ListLn);
For i := 0 to ListLn-1 do
vList[i] := TempArray[i];
TempArray := nil;
End;
function TStrList.Text: String;
var
i: Integer;
Txt: String;
begin
For i := 0 to ListLn-1 do
Txt := Txt + vList[i] + #13;
Txt := Copy(Txt, 1, Length(Txt)-1);
Result := Txt;
end;
function TStrList.Strings(Index: Integer): String;
begin
Result := vList[Index];
end;
procedure TStrList.Replace(Index: Integer; Input: String);
begin
vList[Index] := Input;
end;
function TStrList.Count: Integer;
begin
Result := ListLn;
end;
function TStrList.getstring(index: integer): string;
begin
if (length(vList) > 0) and (index >= low(vList)) and (index <= high(vList)) then
result := vList[index];
end;
procedure TStrList.setstring(index: integer; const Value: string);
begin
if (length(vList) > 0) and (index >= low(vList)) and (index <= high(vList)) then
vList[index] := Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -