大家帮我看看,我哪里错了
type
  MM=record
  a,b,c:string;
  d:Integer;
end;...procedure womena(aa:MM);stdcall;
var
  s:string;
begin
  Form1.Edit1.Text:=aa.a+aa.b+aa.c;
end;...procedure TForm1.Button3Click(Sender: TObject);
var
  ss2:MM;
begin
ss2.a:='Name';
ss2.b:='Age';
ss2.c:='Gold';
womena(ss2);
end;编译没事,但是运行起来有错误,为什么啊?

解决方案 »

  1.   


    MM=record
    a,b,c:string[N];指定下长度看看.........
    d:Integer;
    end;贴错误代码.........
      

  2.   

    你提供的这些代码没问题,不过建议你传结构加上const修饰符,以提交传参效率。
      

  3.   

    错误是:Project1.exe faulted with message:'access violation at 0x77d28944: read of address 0x000037e4'. Process stopped. Use Step Or Run continue.
      

  4.   


    procedure womena(aa:MM);stdcall;
    begin
    form1.Edit1.Text:=aa.a+aa.b+aa.c;
    end;
    procedure womena2(aa:PMM);stdcall;
    begin
    form1.Edit1.Text:=aa.a+aa.b+aa.c;
    end;
    procedure TForm1.Button3Click(Sender: TObject);
    var
      ss2:PMM;
      ss:MM;
    beginss.a:='Name';
    ss.b:='Age';
    ss.c:='Gold';
    //ss2.a:='Name';
    //ss2.b:='Age';
    //ss2.c:='Gold';womena(ss);//womena2(ss2); 
    end;我把上边的带2的去掉后就不行了,如果添上就错误,是因为传递指针么?