SetLength( str, (Integer(p2) - Integer(str)) div 2 );
Na dann warte mal bis 64 Bit kommt, dann passt dein Integer-Typecast wieder nicht. Warum nicht einfach
SetLength( str, (p2 - PChar(str)) );
Damit passt das für
ANSI,
UNICODE und 64 Bit, 128 Bit, ... man weiß ja nie.