Naja, PChar ist ja so definiert, dass der enthaltene String mit dem ersten 0-Zeichen endet (deshalb heißt es ja "nullterminierter String"), darum war ich auf PByte umgestiegen (außerdem macht C/C++ IIRC keinen Unterschied zwischen Byte und Char, der Datentyp ist in beiden Fällen char).
[edit] Aus diesem Grund ist Deine Multiplikation mit SizeOf(Char) auch eigentlich falsch, da Du auf einem
Unicode-Delphi doppelt so viel Speicher anfordern würdest wie tatsächlich benötigt werden. [/edit]