Moin Luckie,
+1 kann nicht schaden, da WM_GETTEXTLENGTH die Länge ohne terminierende Null zurückgibt, wohingegen WM_GETTEXT gerne die Anzahl inclusive der Null hätte.... aber:
Ist der Buffer zu klein für den Text, wird halt weniger kopiert => keine
AV.
Der Fehler im ersten Beispiel liegt wohl im length(szText).
Da Du den Speicher mit GetMem reservierst, wird dieser nicht initialisiert. Length auf einen PChar angewendet liefert allerdings die Anzahl Zeichen bis, exklusive, der ersten Null zurück.
Da ja eigentlich genügend Speicher für den enthaltenen Text reserviert war hätte das zwar nicht stören dürfen, ist aber doch ein gewisser Unsicherheitsfaktor.