まだ判んねぇのか?  じゃ問題をシンプルにしよう。

function hoge1(x:Integer):TSearchRec;
begin
Result.Attr:=x;
end;

procedure hoge2(x:Integer;var Result:TSearchRec);
begin
Result.Attr:=x;
end;

まず、この2つのコードのバイナリは同じになる。 これを確かめてくれ