Das StrDispose an der Stelle ist schon richtig. Ich alloziier mir ja kurzzeitig Speicher um da den WindowText reinzuschreiben.
Das Problem lag woanders.
Delphi-Quelltext
1: 2: 3: 4:
| var str: PAnsiChar; begin str := StrAlloc(10); |
Jetzt steht in str genau das drin, was and der Speicheradresse vorher stand.
Zu einer ziemlig hohen Wahrscheinlichkeit mindestens eine 0.
Also sieht str jetzt zum Beispiel so aus:
Delphi-Quelltext
1:
| Str = #0 #0 #2 #55 #123 #5 #5 #10 #10 #55 |
Jetzt hab ich Idiot folgendes gemacht
Delphi-Quelltext
1:
| GetWindowText(handle, str, Length(str)); |
Und was macht Length(str) ?
Nen implizierten Cast vom PAnsiChar zu AnsiString..
Jetzt passiert folgendes.
Die Methode zum Konvertieren findet direkt am Anfang den Char #0.
#0 ist das Stopp-Zeichen für nen Nullterminierten String.
Also was gibt Length(str) zurück?

Mit 99% Wahrscheinlichkeit ganz viel Unsinn
