Teniendo en cuenta que la cantidad de líneas no es relevante al rendimiento del programa, se me ocurre que si Filelimite(F) devuelve el tamaño total de un archivo, no es necesario utilizarlo. Solo harías el while, comprobando que los bytes leídos son mas que 0.
Obviamente puedes quitar las líneas en blanco que dejas en la función.
También puedes poner todo en una gran línea.
En cuanto a optimización, el establecer la longitud de la cadena, puedes hacerlo solo una vez, pues todas las lecturas posteriores serán iguales.
Código Delphi
[-]
limite := Filelimite(F);
SetLength(contenido, 1024);
while (limite > 1024) do
begin
BlockRead(F, contenido[1], 1024, leyendo);
Result := Result + contenido;
Dec(limite, leyendo);
end;