OOP Delphi

There are three ways to cast a String to a pchar:
typecast as pchar
take the address of the first character:
and typecast the string to a generic pointer.
For a comparison, read the comments in the following code snippet:

var
s : String; // long
p : PChar;
begin
// Typecast as pchar
// Typecasting a string to a PChar returns the address of the first char
// or if the string was empty it returns the address of a null.
// Result p is guaranteed to be non-nil!
p := PChar(s);

// Take address of the first character
// this forces a call to UniqueString() to ensure that the pchar returned
// points to a unique string only referenced by s and not by another string:
p:=@s[1];
// Typecast the string to an untyped pointer
// The simplest and fastest solution; no hidden function call is generated.
p := pointer(s);
end.