>>811
『Object Pascal言語ガイド』より(Delphi 4版ですが)―――

・静的配列型,レコード型,集合型の関数結果の場合,値が1バイトを占有する場合はALに,値
 が2バイトを占有するときにはAXに,値が4バイトを占有する場合はEAXに結果が返される。そ
 の他の場合は,宣言されたパラメータのあとに関数に渡される追加のvarパラメータに結果が返さ
 れる。

―――ということでレコード型では値渡しにはならないようですが,
1レコード全体の内容をコピーすることには変わりなく,
それによるオーバーヘッドが無くなるわけではないので
大きなレコードを大量に処理するような場合は影響が出るかもしれません.

一方,レコード型の値をポインタで渡すことは変ではないと思います.
私のつたない経験ではむしろレコード型のポインタ型にする方が使いやすいと思います.
なぜならレコードの一部だけを変更する処理がシンプルになるからです.

レコード型ならこんな感じ:
 Rec := NantokaObj.Records[i];
 Rec.FamilyName := 'Sato';
 NantokaObj.Records[i] := Rec;

ポインタならこんな感じ:
 NantokaObj.Records[i]^.FamilyName := 'Sato';

※ポインタの場合でもレコード全体をコピーする場合は以下のようにそれぞれ1行で書けます.
NantokaObj.Records[i]^ := Rec;
Rec := NantokaObj.Records[i]^;