レコード型のプロパティにアクセスするには

解決


yuuki  2010-11-09 23:39:10  No: 39512

レコード型のプロパティに直接アクセスすると「代入できない左辺値です」というエラーメッセージが出てコンパイルできません。

type
  TPair = record
  private
    FA: string;
    FB: string;
  public
    property a: string read FA write FA;
    property b: string read FB write FB;
end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    FPair: TPair;
  public
    property pair: TPair read FPair write FPair;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  pair.a := 'test';
end;

上記のような代入はできないのでしょうか?

下記のように一度レコード型を宣言してから代入すると可能なのですが、かなり面倒です。
var
  tmpPair: TPair;
begin
  tmpPair.a := 'test';
  pair := tmpPair;

何かよい方法があればお教え下さい。


通りすがり  2010-11-10 00:39:00  No: 39513

procedure TForm1.Button1Click(Sender: TObject);
begin
  with pair do a := 'test';
end;

よくわかりませんが...


KHE00221  2010-11-10 03:22:23  No: 39514

private
    Pair: TPair;
  public

でいいだろ?


yuuki  2010-11-10 04:07:11  No: 39515

with do を使う方法でうまくいきました。

with do  は単に記述をシンプルにするための記法にすぎないと
思っていたので、たいへん参考になりました。

ありがとうございます。


yuuki  2010-11-11 04:44:09  No: 39516

with do とすることで、レコード型として代入できるのですね
ありがとうございました


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

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






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