構造体(record)を用いた関数を使うには?

解決


SKJP  2004-08-26 23:49:49  No: 10608

type
  human = record
    age : Integer;
    name : String;
  end;

var
  A, B : human;

 [省略]

procedure input_human(obj : human; mage : Integer; mname : String);
begin
  obj.age := mage;
  obj.name := mname;
end;

procedure TmyClass.input_go();
begin
  input_human(A, 21, 'kana');
  input_human(B, 22, 'nana');
end;

procedure TmyClass.get_data();
begin
  ShowMessage(IntToStr(A.age));
  ShowMessage(IntToStr(B.age));
end;

------------------------------------------------
このような場合(実際作成中のプログラムは全く違いますが構成は似ています)、他ユニットにてinput_go()とget_dataを実行。
すると、ShowMessageにて出てくる文字が0になってしまいます。
結果的にA.ageには21、B.ageには22が入っていて欲しいのですが。
どこに問題があるのかがわかりません。
どなたか分かる方宜しくお願いします。


にしの  2004-08-26 23:52:29  No: 10609

値渡しになっているため、関数内で変更しても変わりません。
参照渡しにしたい項目に、varをつけましょう。


SKJP  2004-08-26 23:59:27  No: 10610

早速の回答ありがとうございます!
無事できました。
また一つ勉強になりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加