Implements a collection of header names and values.
TIdHeaderList = class(TStringList)
TIdHeaderList is a TStringList descendant that implements a collection of header names and values, and facilitates the processing of headers used in many protocols such as Gopher+, HTTP, NNTP, POP3, and SMTP.
Features include the use of a ":" instead of a comma for separating field names from values (this can be changed with the NameValueSeparator property), and optional header folding and unfolding.
Indicates if header name comparisons are case sensitive.
property CaseSensitive: Boolean;
CaseSensitive is a Boolean property that indicates if header name comparisons are case sensitive. Name, Values
, and IndexOf will consider case to be significant when CaseSensitive is True.
Indicates the Maximum length of a header line before folding occurs.
property FoldLength: Integer;
FoldLength is an Integer property used to indicate the maximum length of a header line where folding occurs. When FoldLines
is True, FoldLength is used to perform wrapping of text in the header line.
Indicates that header lines can be folded when the maximum length is exceeded.
property FoldLines: Boolean;
FoldLines is a Boolean property that indicates the string contents of header line Values
can be wrapped when the length exceeds FoldLength
. Set FoldLines to True to allow line wrapping.
Access header names by position.
property Names [Index: Integer]: string;
Header position to access.
String - header name at the given position.
Names is a read-only String property that provides indexed access to header names for the header list. Names works like Borland's TStrings.Names except that it uses the delimiter in NameValueSeparator
and respects the case sensitivity flag in CaseSensitive
Delimiter(s) used to separate header names and header values.
property NameValueSeparator: String;
NameValueSeparator is a String property that represents the characters used as a delimiter between the header name and the header value in the textual representation of headers.
Indicates that header lines should be unfolded.
property UnfoldLines: Boolean;
UnfoldLines is a Boolean property that indicates if Values
should be interpreted with line unfolding. Setting UnfoldLines to False will cause Values
to not unfold lines. Setting UnfoldLines to True causes header lines with continuation characters to be returned with the preceding header line.
Allows access to header values by name.
property Values [const Name: string]: string;
Header name to be retrieved.
String - Header value for the header name.
Values is an Indexed String property that works like Borland's TStrings.Values except it uses the delimiter defined in NameValueSeparator
as the seperator between header name and value.
Case sensitivity is set with the CaseSensitive property, and if UnfoldLines is True, lines will be unfolded.
Thus if UnfoldLines is set to true, the value in following Example for Values['Subject'] would be "This is a line which is folded. This is on another line." If UnfoldLines is set to False, the Value['Subject'] would equal = "This is a line which is folded."
Subject: This is a line which is folded.
This is on another line.
Converts text line in NAME=VALUE form to their TIdHeaderLIst representation.
procedure AddStdValues(ASrc: TStrings);
Storage contains values in NAME=VALUE form.
AddStdValues is a procedure used to convert text values in the TStrings container ASrc to their TIdHeaderList
representation using NameValueSeparator
. ASrc contains text representing header names and values in NAME=VALUE form. AddStdValues replaces the '=' character in each text line with the NameValueSeparator
character(s) for their header representation.
Use ConvertToStdValues to convert header name and values to their NAME=VALUE form.
Converts headers using a specific separator to NAME=VALUE form.
procedure ConvertToStdValues(ADest: TStrings);
Storage for header values in NAME=VALUE form.
ConvertToStdValues is a procedure used to convert text values in TIdHeaderList
to a NAME=VALUE representation in the TStrings instance in ADest. ConvertToStdValues replaces the NameValueSeparator
character(s) in each line in TIdHeaderList
with the '=' character used by TStrings descendants.
Use AddStdValues to add text lines in NAME=VALUE form to a TIdHeaderList.
Constructor for the object instance.
Create is the constructor for the object instance, and relies on the inherited Create method to initialize the object. Create also sets the default values for properties including:
Finds and stores all values for the given header name.
procedure Extract(const AName: string; ADest: TStrings);
const AName: string
Header name to be located and stored.
TStrings to store all located header values.
Extract is a procedure that is used to search the header list for all occurrences of the header in AName
. When the header in AName
is located, the value of the header is added to ADest
can, as a result, contain multiple values for the named header, with one value per line.
Note: ADest is not cleared prior to use in Extract. Any existing values in ADest are unaffected.
Returns the index position of the header with the given name.
function IndexOfName(const Name: string): Integer; reintroduce;
const Name: string
Integer - Index position, or -1 when not found.
IndexOfName is an Integer function that returns the index position of the header with the given name. IndexOfName work like Borland's TStrings.IndexOfName except it uses the delimiters defined in NameValueSeparator
, and respects the case sensitivity flag in the CaseSensitive
IndexOfName can return -1 when the header in Name does not exist in the header list.