genau, sie windows-
api-routinen machen das auch so.
Wenn du es wie die Windowsapi machen willst wäre es das sinnvollste das du einen weiteren Parameter hinzufügst der angibt wieviel speicher zur Verfügung steht (und falls dieser nicht reicht machst du eben nix). Desweiteren würde ich das ganze zu einer funktion umformen die zurück gibt wieviel zeichen in den PChar geschrieben wurden bzw. wie groß der Speicher sein müsste.
Wenn du also 2 Zeischen auf den PChar copieren willst solltest du als Rückgabewert eine 20 setzen. Wenn dann jemand die funktion aufruft mit zu wenig speicher (10 byte) so weiß er durch die Rückgabe der 20 das er das ganze nochmal aufrufen muss mit einer Speichergröße von 20.
Oder im umgekehrten Fall. Es ruft jemand die Funktion auf mit einer Speichergröße von 30. Durch die Rückgabe der 20 weiß der Aufrufer das er nur die ersten 20 zeischen nutzen sollte und der Rest Datenmüll ist.