Revisa estos links
Error is " functions containing switch are not expanded inline
W8027: Functions containing 'statement' are not expanded inline
http://www.borlandtalk.com/w8027-fun...-vt108082.html
Basicamente el compilador te esta diciendo que no puede expandir la funcion, esto es, aprovechar cierta caracteristica que permite que una funcion, en lugar de compilarla una sola vez y cada vez que llamas a esa funcion, ir a ese unico lugar de todo tu programa en donde va a estar, se reemplazan las llamadas a la funcion esparcidas por tu codigo por la rutina de la funcion en si
No se entendio nada no?
Código Delphi
[-]
unit FooUnit;
interface
function Foo(x: integer): boolean; inline;
implementation
function Foo(x: integer): boolean;
begin
Result := x > 10;
end;
Código Delphi
[-]
unit Unit1;
interface
uses FooUnit;
interface
function Bar: boolean;
function Bar2: boolean;
implemetantion
function Bar: boolean;
begin
Result := Foo(Random(5));
end;
function Bar2: boolean;
begin
Result := Foo(Random(8));
end;
Al compilarlo esto se traduce en:
Código Delphi
[-]
implemetantion
function Bar: boolean;
begin
Result := Random(5) > 10;
end;
function Bar: boolean;
begin
Result := Random(8) > 10;
end;
Esto evidentemente genera mas lineas de codigo, pero se gana performance ya que se evita el cambio de contexto que llamar a una funcion/procedimiento supone. Pero no siempre es posible, si la funcion es compleja o por ejemplo en un caso como el tuyo. Es una "sugerencia" al compilador (
Ref)