delphi copy a variables of dynamic array reacord to a other ,But they share an address

问题描述 投票:0回答:0
type
  TMen=record
    code:String;
    name:String;
  end;
  TMenLst=array of TMen;
  TForm10 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    a,b:TMenLst;
  public
    { Public declarations }
    procedure show(v:TMenLst);
  end;

var
  Form10: TForm10;

implementation

{$R *.dfm}

procedure TForm10.Button1Click(Sender: TObject);
begin
  SetLength(a,3);
  a[0].code:='code1';
  a[0].name:='name1';
  a[1].code:='code2';
  a[1].name:='name2';
  a[2].code:='code3';
  a[2].name:='name3';


  SetLength(b,3);
  CopyMemory(@b,@a,SizeOf(a));
  //Move(a, b, SizeOf(a));
  a[0].code:='aaaa';
  a[0].name:='bbbb';
  show(a);
  show(b);
end;
procedure TForm10.show(v: TMenLst);
var I:integer;
begin
  for I := Low(v) to High(v) do
    Memo1.Lines.Add('code:'+a[I].code+'  '+'name:'+a[I].name);

    Memo1.Lines.Add('---------------------');
end;

结果: 代码:aaaa 名称:bbbb 代码:code2 名称:name2 代码:code3 姓名:name3

代码:aaaa 名字:bbbb 代码:code2 名称:name2 代码:code3 姓名:name3

为什么修改一个变量会影响另一个

代码:aaaa 名字:bbbb 代码:code2 名称:name2 代码:code3 姓名:name3

代码:代码 1 姓名:姓名 1 代码:code2 名称:name2 代码:code3 姓名:name3

delphi move copymemory
© www.soinside.com 2019 - 2024. All rights reserved.