Und zum dritten:
Delphi-Quellcode:
function GetText(Wnd: HWND): string;
var
textlength: Integer;
Text: PChar;
begin
textlength := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
if textlength = 0 then Result := ''
else
begin
GetMem(Text, textlength + 1);
// Änderung ->
if Assigned(Text) then
try
SendMessage(Wnd, WM_GETTEXT, textlength + 1, Integer(Text));
// Result := Text;
// Änderung ->
SetString(Result, Text, lstrlen(Text));
finally
FreeMem(Text);
end;
end;
end;
Luckies Variante geht natürlich u.U. und das SetString ist eher kosmetischer Natur. Natürlich geht auch eine normale Zuweisung, solange die Orginal-Systemunits eingebunden sind (für die String-Compilermagic
)