You can also use
Pointer(S)
to cast a long string to an untyped pointer. But if
S
is empty, the typecast returns
nil.
PChar(S)
always returns a pointer to a memory block; if
S
is empty, a pointer to
#0
is returned.
When you cast a long-string variable to a pointer, the pointer remains valid until the variable is assigned a new
value or goes out of scope. If you cast any other long-string
expression to a pointer, the pointer is valid only
within the statement where the typecast is performed.
When you cast a long-string expression to a pointer, the pointer should usually be considered read-only. You
can safely use the pointer to modify the long string only when all of the following conditions are satisfied.
The expression cast is a long-string variable.
The string is not empty.
The
string is unique - that is, has a reference count of one. To guarantee that the string is unique, call the
SetLength,
SetString
, or
UniqueString
procedure.
The string has not been modified since the typecast was made.
The characters modified are all within the string. Be careful not to use an out-of-range index on the pointer.
The same rules apply when mixing WideString values with PWideChar values.
75