TStringList-TStrings Tutorial
TStringList
The TStringList (or TStrings) is much like a fancy dynamic array or Set of Strings (a set of strings is not possible in FPC). It will come in handy a lot when programming and I'm going to teach you basic TStringList usage!
<Delphi> program StrList; {$mode objfpc} uses
Classes, SysUtils;
var
Str: TStringList;
begin
Str := TStringList.Create; // This is needed when using this class(or most classes) Str.Add('Some String!'); writeln('The stringlist now has ' + IntToStr(Str.Count) + ' string(s).'); Readln;
end. </Delphi>
This is a simple console program that will create and add one string to a stringlist. Now here's some things you should know:
Create - Will create the string list for modifying.
Count - Is a counter for the number of strings in the List.
Add - Will allow you to add one string to the stringlist. It is a function that will return the Index of the String. This is where the counter comes in handy.
Delete - Will delete a string from the stringlist. Just know that you do not simply input the string, you have to input the index of the string. Like I said: it's like a fancy Dynamic Array.
IndexOf - Will return the index of the string in the list. If it is not found it returns -1.
Clear - Will clear the list.
Example
How about a more juicy example, Eh?
<Delphi> program StrList2; {$mode ObjFPC} uses Classes, SysUtils;
var
Str: TStringList; S: String; Counter: Integer;
begin
Str := TStringList.Create; Writeln('String List Test'); repeat Writeln('Enter a string to add'); Readln(S); if (S = 'EXIT') then Halt; if not (S = ) then begin Counter := Str.Add(S); Writeln('String: ' + S + ' was Added!'); Writeln('Index is: ' + IntToStr(Counter)); // The counter will always become the index of the last thing added end else begin Writeln('No data entered...'); end; until (S = 'EXIT');
end. </Delphi>
File Handling
When using the TStringList you have 2 file handling procedures: SaveToFile and LoadFromFile. SavetoFile will save all strings in the list to a file. LoadFromFile will open the file and add the file data to the list string by string.
<Delphi> program StrListFile; {$mode objfpc} uses
Classes, SysUtils;
var
Str: TStringList;
begin
Str := TStringList.Create; Str.LoadFromFile('SomeFile.txt'); Str.Add('Hello'); Str.SaveToFile('SomeFile.txt');
end. </Delphi>
You just opened a file, edited it and saved it right back to were it was!
Dynamic string array comparison
TStringList is simply an advanced object version of dynamic string array. Some methods have analogs:
Operation | array of string | TStringList |
---|---|---|
Variable declaration | StringList: array of string; | StringList: TStringList; |
Initialization | implicit constructor | StringList := TStringList.Create |
Set size | SetLength(StringList, X); | StringList.Size := X; |
Get size | X := Length(StringList); | X := StringList.Size; |
Add item | SetLength(StringList, Length(StringList) + 1); StringList[Length(StringList) - 1] := X; | StringList.Add(X); |
Delete item | for I := Index to Length(StringList) - 2 do StringList[I] := StringList[I + 1]; SetLength(StringList, Length(StringList) - 1); | StringList.Delete(Index); |
Remove all items | SetLength(StringList, 0); | StringList.Clear; |
Finalization | implicit destructor | StringList.Free; |
But TStringList offers much more functionality than a basic structure such as a dynamic array.
Keep Learning
You can learn all the different procedures, functions and properties. See TStringList documentation
If you feel I might have left something out, Modify At Will!
Hope I helped!