TStrings
[Properties (by Name)][Methods (by Name)][Events (by Name)]
Class to manage arrays or collections of strings
Declaration
Source position: classesh.inc line 616
Type
  TStrings = class (TPersistent)
  private
    FDefaultEncoding : TEncoding;
    FEncoding : TEncoding;
    FMissingNameValueSeparatorAction : TMissingNameValueSeparatorAction;
    FSpecialCharsInited : Boolean;
    FAlwaysQuote : Boolean;
    FQuoteChar : Char;
    FDelimiter : Char;
    FNameValueSeparator : Char;
    FUpdateCount : Integer;
    FAdapter : IStringsAdapter;
    FLBS : TTextLineBreakStyle;
    FOptions : TStringsOptions;
    FLineBreak : string;
    function GetCommaText : string;
    function GetLineBreakCharLBS : string;
    function GetMissingNameValueSeparatorAction
                                                : TMissingNameValueSeparatorAction;
    function GetName(Index: Integer) : string;
    function GetStrictDelimiter : Boolean;
    function GetTrailingLineBreak : Boolean;
    function GetUseLocale : Boolean;
    function GetValue(const Name: string) : string;
    function GetWriteBOM : Boolean;
    function GetLBS : TTextLineBreakStyle;
    procedure SetDefaultEncoding(const ADefaultEncoding: TEncoding);
    procedure SetEncoding(const AEncoding: TEncoding);
    procedure SetLBS(AValue: TTextLineBreakStyle);
    procedure ReadData(Reader: TReader);
    procedure SetCommaText(const Value: string);
    procedure SetMissingNameValueSeparatorAction
                                                (AValue: TMissingNameValueSeparatorAction);
    procedure SetStringsAdapter(const Value: IStringsAdapter);
    procedure SetStrictDelimiter(AValue: Boolean);
    procedure SetTrailingLineBreak(AValue: Boolean);
    procedure SetUseLocale(AValue: Boolean);
    procedure SetWriteBOM(AValue: Boolean);
    procedure SetValue(const Name: string; const Value: string);
    procedure SetDelimiter(c: Char);
    procedure SetQuoteChar(c: Char);
    procedure SetNameValueSeparator(c: Char);
    procedure WriteData(Writer: TWriter);
    procedure DoSetTextStr(const Value: string; DoClear: Boolean);
    function GetDelimiter : Char;
    function GetNameValueSeparator : Char;
    function GetQuoteChar : Char;
    function GetLineBreak : string;
    procedure SetLineBreak(const S: string);
    function GetSkipLastLineBreak : Boolean;
    procedure SetSkipLastLineBreak(const AValue: Boolean);
    procedure DoSetDelimitedText(const AValue: string; DoClear: Boolean; 
                                aStrictDelimiter: Boolean; 
                                aQuoteChar: Char; aDelimiter: Char);
  protected
    function CompareStrings(const s1: string; const s2: string) : Integer
                           ;  Virtual;
    procedure DefineProperties(Filer: TFiler);  Override;
    procedure Error(const Msg: string; Data: Integer);
    procedure Error(const Msg: PString; Data: Integer);
    function Get(Index: Integer) : string;  Virtual;  Abstract;
    function GetCapacity : Integer;  Virtual;
    function GetCount : Integer;  Virtual;  Abstract;
    function GetObject(Index: Integer) : TObject;  Virtual;
    function GetTextStr : string;  Virtual;
    procedure Put(Index: Integer; const S: string);  Virtual;
    procedure PutObject(Index: Integer; AObject: TObject);  Virtual;
    procedure SetCapacity(NewCapacity: Integer);  Virtual;
    procedure SetTextStr(const Value: string);  Virtual;
    procedure SetUpdateState(Updating: Boolean);  Virtual;
    UpdateCount : Integer;
    function DoCompareText(const s1: string; const s2: string) : PtrInt
                          ;  Virtual;
    function GetDelimitedText : string;
    procedure SetDelimitedText(const AValue: string);
    function GetValueFromIndex(Index: Integer) : string;
    procedure SetValueFromIndex(Index: Integer; const Value: string);
    procedure CheckSpecialChars;
    class function GetNextLine(const Value: string; var S: string; 
                              var P: SizeInt) : Boolean;
    function GetNextLinebreak(const Value: string; var S: string; 
                             var P: SizeInt) : Boolean;
  public
    constructor Create;
    destructor Destroy;  Override;
    function ToObjectArray(aStart: Integer; aEnd: Integer) : TObjectDynArray
                          ;  Overload;
    function ToObjectArray : TObjectDynArray;  Overload;
    function ToStringArray(aStart: Integer; aEnd: Integer) : TStringDynArray
                          ;  Overload;
    function ToStringArray : TStringDynArray;  Overload;
    function Add(const S: string) : Integer;  Virtual;  Overload;
    function Add(const Fmt: string; const Args: Array of const) : Integer
                ;  Overload;
    function AddObject(const S: string; AObject: TObject) : Integer
                      ;  Virtual;  Overload;
    function AddObject(const Fmt: string; Args: Array of const; 
                      AObject: TObject) : Integer;  Overload;
    function AddPair(const AName: string; const AValue: string) : TStrings
                    ;  Overload;
    function AddPair(const AName: string; const AValue: string; 
                    AObject: TObject) : TStrings;  Overload;
    procedure AddStrings(TheStrings: TStrings);  Virtual;  Overload;
    procedure AddStrings(TheStrings: TStrings; ClearFirst: Boolean)
                        ;  Overload;
    procedure AddStrings(const TheStrings: Array of string);  Virtual
                        ;  Overload;
    procedure AddStrings(const TheStrings: Array of string; 
                        ClearFirst: Boolean);  Overload;
    procedure SetStrings(TheStrings: TStrings);  Virtual;  Overload;
    procedure SetStrings(TheStrings: Array of string);  Virtual;  Overload;
    procedure AddText(const S: string);  Virtual;
    procedure AddCommaText(const S: string);
    procedure AddDelimitedText(const S: string; ADelimiter: Char; 
                              AStrictDelimiter: Boolean);  Overload;
    procedure AddDelimitedtext(const S: string);  Overload;
    procedure Append(const S: string);
    procedure Assign(Source: TPersistent);  Override;
    procedure BeginUpdate;
    procedure Clear;  Virtual;  Abstract;
    procedure Delete(Index: Integer);  Virtual;  Abstract;
    procedure EndUpdate;
    function Equals(Obj: TObject) : Boolean;  Override;  Overload;
    function Equals(TheStrings: TStrings) : Boolean;  Overload;
    procedure Exchange(Index1: Integer; Index2: Integer);  Virtual;
    function ExtractName(const S: string) : string;
    procedure Filter(aFilter: TStringsFilterMethod; aList: TStrings);
    function Filter(aFilter: TStringsFilterMethod) : TStrings;
    procedure Fill(const aValue: string; aStart: Integer; aEnd: Integer);
    procedure ForEach(aCallback: TStringsForEachMethod);
    procedure ForEach(aCallback: TStringsForEachMethodEx);
    procedure ForEach(aCallback: TStringsForEachMethodExObj);
    function GetEnumerator : TStringsEnumerator;
    procedure GetNameValue(Index: Integer; out AName: string; 
                          out AValue: string);
    function GetText : PChar;  Virtual;
    function IndexOf(const S: string) : Integer;  Virtual;
    function IndexOf(const S: string; aStart: Integer) : Integer;  Virtual;
    function IndexOfName(const Name: string) : Integer;  Virtual;
    function IndexOfObject(AObject: TObject) : Integer;  Virtual;
    procedure Insert(Index: Integer; const S: string);  Virtual;  Abstract;
    procedure InsertObject(Index: Integer; const S: string; 
                          AObject: TObject);
    function LastIndexOf(const S: string; aStart: Integer) : Integer
                        ;  Virtual;
    function LastIndexOf(const S: string) : Integer;
    procedure LoadFromFile(const FileName: string);  Virtual;  Overload;
    procedure LoadFromFile(const FileName: string; IgnoreEncoding: Boolean);
    procedure LoadFromFile(const FileName: string; AEncoding: TEncoding)
                          ;  Virtual;  Overload;
    procedure LoadFromStream(Stream: TStream);  Virtual;  Overload;
    procedure LoadFromStream(Stream: TStream; IgnoreEncoding: Boolean)
                            ;  Overload;
    procedure LoadFromStream(Stream: TStream; AEncoding: TEncoding)
                            ;  Virtual;  Overload;
    procedure Map(aMap: TStringsMapMethod; aList: TStrings);
    function Map(aMap: TStringsMapMethod) : TStrings;
    procedure Move(CurIndex: Integer; NewIndex: Integer);  Virtual;
    function Pop : string;
    function Reduce(aReduceMethod: TStringsReduceMethod; 
                   const startingValue: string) : string;
    function Reverse : TStrings;
    procedure Reverse(aList: TStrings);
    procedure SaveToFile(const FileName: string);  Virtual;  Overload;
    procedure SaveToFile(const FileName: string; IgnoreEncoding: Boolean)
                        ;  Overload;
    procedure SaveToFile(const FileName: string; AEncoding: TEncoding)
                        ;  Virtual;  Overload;
    procedure SaveToStream(Stream: TStream);  Virtual;  Overload;
    procedure SaveToStream(Stream: TStream; IgnoreEncoding: Boolean)
                          ;  Overload;
    procedure SaveToStream(Stream: TStream; AEncoding: TEncoding);  Virtual
                          ;  Overload;
    function Shift : string;
    procedure Slice(fromIndex: Integer; aList: TStrings);
    function Slice(fromIndex: Integer) : TStrings;
    procedure SetText(TheText: PChar);  Virtual;
    AlwaysQuote : Boolean;
    Capacity : Integer;
    CommaText : string;
    Count : Integer;
    DefaultEncoding : TEncoding;
    DelimitedText : string;
    Delimiter : Char;
    Encoding : TEncoding;
    LineBreak : string;
    MissingNameValueSeparatorAction : TMissingNameValueSeparatorAction;
    Names[Index: Integer]: string;
    NameValueSeparator : Char;
    Objects[Index: Integer]: TObject;
    Options : TStringsOptions;
    QuoteChar : Char;
    SkipLastLineBreak : Boolean;
    TrailingLineBreak : Boolean;
    StrictDelimiter : Boolean;
    Strings[Index: Integer]: string; default;
    StringsAdapter : IStringsAdapter;
    Text : string;
    TextLineBreakStyle : TTextLineBreakStyle;
    UseLocale : Boolean;
    ValueFromIndex[Index: Integer]: string;
    Values[Name: string]: string;
    WriteBOM : Boolean;
  end
  ;
Description
TStrings implements an abstract class to manage an array of strings. It introduces methods to set and retrieve strings in the array, searching for a particular string, concatenating the strings and so on. It also allows an arbitrary object to be associated with each string.
It also introduces methods to manage a series of name=value settings, as found in many configuration files.
An instance of TStrings is never created directly, instead a descendant class such as TStringList should be created. This is because TStrings is an abstract class which does not implement all methods; TStrings also doesn't store any strings, this is the functionality introduced in descendants such as TStringList .
TStrings implements the IFPObserved interface: when the stringlist is changed, a ooChanged notification is sent to all observers.
Members
| Member | Type | Visibility | Description | 
|---|---|---|---|
| Add | Method | public | Add a string to the list | 
| AddCommaText | Method | public | |
| AddDelimitedText | Method | public | |
| AddObject | Method | public | Add a string and associated object to the list. | 
| AddPair | Method | public | Add a name-value pair | 
| AddStrings | Method | public | Add contents of another stringlist to this list. | 
| AddText | Method | public | Add text to the string list. | 
| AlwaysQuote | Property | public | Always quote strings in DelimitedText | 
| Append | Method | public | Add a string to the list. | 
| Assign | Method | public | Assign the contents of another stringlist to this one. | 
| BeginUpdate | Method | public | Mark the beginning of an update batch. | 
| Capacity | Property | public | Capacity of the list, i.e. number of strings that the list can currently hold before it tries to expand. | 
| CheckSpecialChars | Method | protected | |
| Clear | Method | public | Removes all strings and associated objects from the list. | 
| CommaText | Property | public | Contents of the list as a comma-separated string. | 
| CompareStrings | Method | protected | |
| Count | Property | public | Number of strings in the list. | 
| Create | Method | public | Initializ a new TStrings instance | 
| DefaultEncoding | Property | public | Default encoding of stringlist | 
| DefineProperties | Method | protected | Method to stream the contents of the string collection | 
| Delete | Method | public | Delete a string from the list. | 
| DelimitedText | Property | public | Get or set all strings in the list in a delimited form. | 
| Delimiter | Property | public | Delimiter character used in DelimitedText . | 
| Destroy | Method | public | Frees all strings and objects, and removes the list from memory. | 
| DoCompareText | Method | protected | |
| DoSetDelimitedText | Method | private | |
| DoSetTextStr | Method | private | |
| Encoding | Property | public | Current encoding of stringlist | 
| EndUpdate | Method | public | Mark the end of an update batch. | 
| Equals | Method | public | Compares the contents of two stringlists. | 
| Error | Method | protected | Raises an EStringListError exception. | 
| Exchange | Method | public | Exchanges two strings in the list. | 
| ExtractName | Method | public | Extract the name part of a string | 
| FAdapter | Field | private | |
| FAlwaysQuote | Field | private | |
| FDefaultEncoding | Field | private | |
| FDelimiter | Field | private | |
| FEncoding | Field | private | |
| Fill | Method | public | |
| Filter | Method | public | |
| FLBS | Field | private | |
| FLineBreak | Field | private | |
| FMissingNameValueSeparatorAction | Field | private | |
| FNameValueSeparator | Field | private | |
| FOptions | Field | private | |
| ForEach | Method | public | |
| FQuoteChar | Field | private | |
| FSpecialCharsInited | Field | private | |
| FUpdateCount | Field | private | |
| Get | Method | protected | Abstract read handler for the TStrings.Strings property. | 
| GetCapacity | Method | protected | Abstract Read handler for the TStrings.Capacity property. | 
| GetCommaText | Method | private | |
| GetCount | Method | protected | Abstract read handler for the TStrings.Count property. | 
| GetDelimitedText | Method | protected | |
| GetDelimiter | Method | private | |
| GetEnumerator | Method | public | Create an IEnumerator instance | 
| GetLBS | Method | private | |
| GetLineBreak | Method | private | |
| GetLineBreakCharLBS | Method | private | |
| GetMissingNameValueSeparatorAction | Method | private | |
| GetName | Method | private | |
| GetNameValue | Method | public | Return both name and value of a name,value pair based on it's index. | 
| GetNameValueSeparator | Method | private | |
| GetNextLine | Method | protected | |
| GetNextLinebreak | Method | protected | |
| GetObject | Method | protected | Abstract read handler for the TStrings.Objects property. | 
| GetQuoteChar | Method | private | |
| GetSkipLastLineBreak | Method | private | |
| GetStrictDelimiter | Method | private | |
| GetText | Method | public | Returns the contents as a PChar | 
| GetTextStr | Method | protected | Read handler for the TStrings.Text property. | 
| GetTrailingLineBreak | Method | private | |
| GetUseLocale | Method | private | |
| GetValue | Method | private | |
| GetValueFromIndex | Method | protected | |
| GetWriteBOM | Method | private | |
| IndexOf | Method | public | Find a string in the list and return its position. | 
| IndexOfName | Method | public | Finds the index of a name in the name-value pairs. | 
| IndexOfObject | Method | public | Finds an object in the list and returns its index. | 
| Insert | Method | public | Insert a string in the list. | 
| InsertObject | Method | public | Insert a string and associated object in the list. | 
| LastIndexOf | Method | public | |
| LineBreak | Property | public | LineBreak character to use | 
| LoadFromFile | Method | public | Load the contents of a file as a series of strings. | 
| LoadFromStream | Method | public | Load the contents of a stream as a series of strings. | 
| Map | Method | public | |
| MissingNameValueSeparatorAction | Property | public | |
| Move | Method | public | Move a string from one place in the list to another. | 
| Names | Property | public | Name parts of the name-value pairs in the list. | 
| NameValueSeparator | Property | public | Value of the character used to separate name,value pairs | 
| Objects | Property | public | Indexed access to the objects associated with the strings in the list. | 
| Options | Property | public | A set of TStringsOption - various boolean properties. | 
| Pop | Method | public | |
| Put | Method | protected | Write handler for the TStrings.Strings property. | 
| PutObject | Method | protected | Write handler for the TStrings.Objects property. | 
| QuoteChar | Property | public | Quote character used in DelimitedText . | 
| ReadData | Method | private | |
| Reduce | Method | public | |
| Reverse | Method | public | |
| SaveToFile | Method | public | Save the contents of the list to a file. | 
| SaveToStream | Method | public | Save the contents of the string to a stream. | 
| SetCapacity | Method | protected | Write handler for the TStrings.Capacity property. | 
| SetCommaText | Method | private | |
| SetDefaultEncoding | Method | private | |
| SetDelimitedText | Method | protected | |
| SetDelimiter | Method | private | |
| SetEncoding | Method | private | |
| SetLBS | Method | private | |
| SetLineBreak | Method | private | |
| SetMissingNameValueSeparatorAction | Method | private | |
| SetNameValueSeparator | Method | private | |
| SetQuoteChar | Method | private | |
| SetSkipLastLineBreak | Method | private | |
| SetStrictDelimiter | Method | private | |
| SetStrings | Method | public | |
| SetStringsAdapter | Method | private | |
| SetText | Method | public | Set the contents of the list from a PChar. | 
| SetTextStr | Method | protected | Write handler for the TStrings.Text property. | 
| SetTrailingLineBreak | Method | private | |
| SetUpdateState | Method | protected | Sets the update state. | 
| SetUseLocale | Method | private | |
| SetValue | Method | private | |
| SetValueFromIndex | Method | protected | |
| SetWriteBOM | Method | private | |
| Shift | Method | public | |
| SkipLastLineBreak | Property | public | Do not add a linebreak to the last item | 
| Slice | Method | public | |
| StrictDelimiter | Property | public | Should only the delimiter character be considered a delimiter | 
| Strings | Property | public | Indexed access to the strings in the list. | 
| StringsAdapter | Property | public | Not implemented in Free Pascal. | 
| Text | Property | public | Contents of the list as one big string. | 
| TextLineBreakStyle | Property | public | Determines which line breaks to use in the Text property | 
| ToObjectArray | Method | public | |
| ToStringArray | Method | public | |
| TrailingLineBreak | Property | public | Add a linebreak to the last item | 
| UpdateCount | Property | protected | |
| UseLocale | Property | public | Determines what methods are used in strings comparison. | 
| ValueFromIndex | Property | public | Return the value part of a string based on it's index. | 
| Values | Property | public | Value parts of the name-value pairs in the list. | 
| WriteBOM | Property | public | Write BOM when writing stringlist to stream | 
| WriteData | Method | private | 
Inheritance
| Class | Description | 
|---|---|
| TStrings | Class to manage arrays or collections of strings | 
See also
| Name | Description | 
|---|---|
| Char | Character type (1 byte) | 
| Char | Character type (1 byte) | 
| Char | Character type (1 byte) | 
| Char | Character type (1 byte) | 
| Char | Character type (1 byte) | 
| Char | Character type (1 byte) | 
| IFPObserved | Interface implemented by an object that can be observed. | 
| Integer | A signed 16-bits integer | 
| Integer | A signed 16-bits integer | 
| Integer | A signed 16-bits integer | 
| Integer | A signed 16-bits integer | 
| IStringsAdapter | IStringsAdapter Interface declaration. | 
| IStringsAdapter | IStringsAdapter Interface declaration. | 
| TEncoding | |
| TEncoding | |
| TEncoding | |
| TEncoding | |
| TObject | Base class of all classes. | 
| TStringList | Standard implementation of the TStrings class. | 
| TStringsOptions | Set of TStringsOption | 
| TStringsOptions | Set of TStringsOption | 
| TTextLineBreakStyle | Text line break style. (end of line character) | 
| TTextLineBreakStyle | Text line break style. (end of line character) |