问一个delphi 的问题  
我创建了一个类 Tydsms  然后在主窗休中使用 ydsms : array[0..15] of Tydsms;  之后用
ydsms [1] := Tydsms.create; ydsms [2] := Tydsms.create; 创建两个对象,但是有个问题 ,就是我改ydsms[2]里的变量值 结果 ydsms[1]里的也一样改动了 这是什么呢?unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,unit2;type
  TForm1 = class(TForm)
    mmo1: TMemo;
    btn1: TButton;
    btn2: TButton;
    mmo2: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  ydsms : array[1..30] of Tydsms;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ydsms[1] := Tydsms.Create;
ydsms[1].setmemo(mmo1);ydsms[2] := Tydsms.Create;
ydsms[2].setmemo(mmo2);
end;procedure TForm1.btn1Click(Sender: TObject);
begin
ydsms[1].showinfo;
ydsms[2].showinfo;
ydsms[2].setinfo('step2');
end;procedure TForm1.btn2Click(Sender: TObject);
begin
 ydsms[1].showinfo;
ydsms[2].showinfo;
end;end.

解决方案 »

  1.   

    ----Tydsms 类----
    unit Unit2;interface
    uses StdCtrls;
       type
       Tydsms = class
       memo1 : Tmemo;
       public
          info : string;
       procedure setmemo(memo : Tmemo);
       procedure showinfo;
       procedure setinfo(ss : string);
       constructor create;
       private   end;
       var
        my : Tydsms;implementation{ Tydsms }
    constructor Tydsms.create;
    begin
       info := 'deault';
    end;procedure Tydsms.setinfo(ss: string);
    begin
    info := ss;
    end;procedure Tydsms.setmemo(memo: Tmemo);
    begin
    memo1 := memo;
    end;procedure Tydsms.showinfo;
    begin
     memo1.Lines.Add(info);
    end;end.
      

  2.   

    DELPHI7 值是不同的,代码一点没改。你用的是D几?
      

  3.   

    并没有改变呀mmo1显示的是deault, mmo2显示的是step2
      

  4.   

    因好奇,试了下,分别点btn1Click、btn2Click,出现下面的结果,没有看到你所说的,我用的是delphi7
    mmo1
    deault
    deaultmmo2
    deault
    step2