クラスの定義方法について(arrayなクラス)

解決


とも  2013-01-30 19:03:11  No: 43712

こんにちは、お世話になります。

クラスを作ったことがなくて今勉強しているのですが、
本を見て下記のようにすれば出来ることがわかりました。

次にこのクラスを
  Seito[1].Name := '山田';
  Seito[2].Name := '佐藤';
  Seito[3].Name := '鈴木';
のように、array として扱えるようにしたいのですが、
それはどう定義すれば良いでしょうか?

教科書からさらに一歩、と思うと、情報をなかなか見つけられません。
よろしくお願いいたします。

//-----------------------------
//implementation 部
type
  TSeiseki = record
    Eigo: integer;    //英語の成績
    Kokugo: Integer;  //国語の成績
    Sugaku: Integer;  //数学の成績
  end;
  TSeito = class
    Name: String;
    Seiseki: TSeiseki;
  end;
//-----------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  Seito: TSeito;
begin
  Seito := TSeito.Create;
    Seito.Name := '山下';
    Seito.Seiseki.Eigo := 80;
    Seito.Seiseki.Kokugo := 60;
    Seito.Seiseki.Sugaku := 40;
    ShowMessage(Seito.Name +'の成績の合計は'
              +IntToStr(Seito.Seiseki.Eigo
              +Seito.Seiseki.Kokugo+Seito.Seiseki.Sugaku));
  Seito.Free;
end;
//-----------------------------


とも  2013-01-30 21:22:43  No: 43713

私勘違いしていました。
クラスの定義で無く、varの所で定義すれば良いのですね。

procedure TForm1.Button3Click(Sender: TObject);
var
  Seito: array of TSeito;
begin
  SetLength(Seito,1);
  Seito[0] := TSeito.Create;

  Seito[0].Name := '太郎';
  Seito[0].Seiseki.Eigo := 80;
  Seito[0].Seiseki.Kokugo := 60;
  Seito[0].Seiseki.Sugaku := 40;

  ShowMessage(Seito[0].Name +'の成績の合計は'
              +IntToStr(Seito[0].Seiseki.Eigo
              +Seito[0].Seiseki.Kokugo+Seito[0].Seiseki.Sugaku));
  Seito[0].Free;
end;


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

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






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