请大家看看下面代码:
type
  Pstr=^string;
var
  aa:integer;//传递地址变量
procedure TForm1.Button1Click(Sender: TObject);
var
  str:PStr;
begin
  new(str);
  Str^:='attttt';
  aa:=Integer(Str^);//取得地址
end;procedure TForm1.Button2Click(Sender: TObject);
var
  str1:Pstr;
begin
  str1:=@Pstr(aa);
  SHowmessage(str1^);
  Dispose(str1);//一执行就出错,前面的都没错
end;
  我想用一个整形变量aa作地址的传递参数,可以成功把的将str的地址传递给str1,但一执行dsipose(str1)就出错,忘各位高手指点!!谢谢!

解决方案 »

  1.   

    aa:=Integer(Str^);//取得地址
    这里不对吧.aa:=integer(AStr);
      

  2.   

    下面的代码是没有问题的,能正确执行了:type
      Pstr=^string;var
      aa:integer;//传递地址变量procedure TForm1.Button1Click(Sender: TObject);
    var
      str:PStr;
    begin
      new(str);
      Str^ := 'attttt';
      aa := Integer(Str);//取得地址
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      str1:Pstr;
    begin
      str1:=Pstr(aa);
      SHowmessage(str1^);
      Dispose(str1);//执行不会出错了。
    end;
      

  3.   

    type
      Pstr=^string;var
      Form1: TForm1;
      aa:integer;//传递地址变量
      str:PStr;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);begin
      new(str);
      Str^:='attttt';
      aa:=Integer(Str^);//取得地址
    end;procedure TForm1.btn2Click(Sender: TObject);
    var
      str1:Pstr;
    begin
      str1:=@Pstr(aa);
      SHowmessage(str1^);
      Dispose(str);//一执行就出错,前面的都没错
      str1:=nil;
    end;
      

  4.   

    var
      str:PStr;改为var
      str:pchar;