Bin mir nicht 100%-ig sicher, aber ich denke mal es liegt daran, dass du schon einen String übergibst obwohl du die Länge nicht weisst. Probier mal diese Fassung (nicht getestet):
Delphi-Quellcode:
function Tform1.escapestring({const} str: String): String;
var len: integer;
begin
len := mysql_escape_string(nil, PChar(str), Length(str));
SetLength(Result, len);
mysql_escape_string(@Result[1], PChar(str), Length(str));
end;