Wieso wird da ein Umweg über "s" gemacht, und die Daten nicht direkt in Result geschrieben ?
Code: Alles auswählen
// fileutil.inc, ab Zeile 745
function ReadFileToString(const Filename: String): String;
var
SrcHandle: THandle;
ReadCount: LongInt;
s: String;
begin
Result := '';
s:='';
try
Setlength(s, FileSize(Filename));
if s='' then exit;
SrcHandle := LazFileUtils.FileOpenUTF8(Filename, fmOpenRead or fmShareDenyWrite);
if (THandle(SrcHandle)=feInvalidHandle) then
exit;
try
ReadCount:=FileRead(SrcHandle,s[1],length(s));
if ReadCount<length(s) then
exit;
finally
FileClose(SrcHandle);
end;
Result:=s;
except
// ignore errors, Result string will be empty
end;
end;