recordの初期化

解決


Red  2010-02-23 10:36:11  No: 37742  IP: 192.*.*.*

record型の初期化をしたいのですが、
下記のようにするとうまくいきません。
Bag.Valueに0を代入したいのですが、
BagResetを通っても、Bag.Value=123のままのようです。
クラス化するとうまくいくのですが、
下記ではどこがいけないのでしょうか?

type
  TBag = record
    Value: integer;
  end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
    Bag: Tbag;
    procedure BagReset(B: TBag);
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BagReset(B: TBag);
begin
  B.Value := 0;
  caption := inttostr(Bag.Value);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Bag.Value := 123;
  BagReset(Bag);
end;

編集 削除
Red  2010-02-23 10:39:01  No: 37743  IP: 192.*.*.*

すみません、環境は、WinXP Delphi6 Personalです。

編集 削除
Quest  2010-02-23 11:15:51  No: 37744  IP: 192.*.*.*

procedure BagReset(B: TBag);
これを
procedure BagReset(var B: TBag);
にすればOKです。

編集 削除
Red  2010-02-23 11:27:54  No: 37745  IP: 192.*.*.*

Questさん

できました。
ありがとうございました。

勉強になりました。
また機会があればご指導願えたらと思います。

編集 削除