Nutzt du eine sehr alte Delphi-Version (vor D2009), oder eine neuere? Denn in den neueren Versionen ist diese Zeile das Problem, denke ich:
Parameters[I + 6] := PAnsiChar(IntToStr(I));
IntToStr liefert einen
Unicode-String, mit zwei Byte pro Zeichen, wovon jedes zweite oft gleich 0 ist (zumindest bei Zahlen ist das der Fall). Ein Cast auf PAnsiChar bewirkt dann, dass der String nach dem ersten Zeichen zu Ende ist - das zweite Byte ist dann der Nullterminator.
Mit
PAnsiChar(AnsiString(IntToStr(I)))
sollte es klappen.
Edit: Ok, nach dem zweiten Lesen ist das keine direkte Antwort auf die Frage, aber vielleicht liegt da ja eine Nebenwirkung der Casts...
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.