In while- und repeat-Schleifen in der Bedingung benutzte Funktionen können nicht inline eingebunden werden.
Doofe Frage vielleicht, aber warum nicht?
Etwas schneller sollte es übrigens sein, wenn du neof außerhalb deiner Funktion definierst und nicht darin. Dann kann der Compiler oft besser optimieren.
Das habe ich schon probiert und macht so gut wie keinen Unterschied.
Gibt es sonst noch eine andere Möglichkeit? Ich möchte ungerne alle 1-zeiligen Funktionsaufrufe manuell in die Hauptfunktion copy und pasten
Edit:
Bei folgendem Code funktioniert das inlining übrigens perfekt:
Delphi-Quellcode:
procedure p3(const s:string);
function eof(i,l:integer):boolean;inline;
begin
result:=i>l;
end;
var i,l:integer;
begin
i:=1;
l:=length(s);
while true do
begin
if eof(i,l) then break;
//...
inc(i);
end;
end;
Das ist aber natürlich ziemlich unschön...