获得一个变量的指针,也取到这个变量的值了,怎么改变这个变量的值?
procedure Tform1.button1.click(sender:Tobject);
var
 p:pointer;
 s:string;
begin
 p:=getprocaddress(0,'s_test');
 s:='则试串';
 //此处如何把S写入到指针P处,改变变量s_test的值
 .....end;

解决方案 »

  1.   

    Sorry
    procedure TForm1.Button2Click(Sender: TObject);
    var 
     p: pointer;
     s: string;
     s_test: String;
    begin 
     p:=getprocaddress(0,'s_test');
     s :='则试串';
     p := @s;
     ShowMessage(String(p^));
     //此处如何把S写入到指针P处,改变变量s_test的值
    // .....end;
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      p: pointer;
      s: string;
    begin
      p:=getprocaddress(0,'s_test');
      s :='测试串';
      String(p^) := s;
    end;
      

  3.   

    p := @s;这个不可以
    String(p^) := s;这个可以,但运行后,退出时会出错,丢失地址s_test这个变量是主程序用的,而修改是在主程序调用的其它程序完成的求助
      

  4.   

    p := @s[1];  //这样就可以了不要把一个指针指向一个s, 不安全:
    var
      p: Pointer;
    begin
      GetMem(p, Length(s));
      try
        StrPCopy(PChar(p), s);
        //...
      finally
        FreeMem(p);
      end;
    end;重新看了一下你的问题, 好像s_test是一个函数名吧?
      p:=getprocaddress(0,'s_test'); 不明白你想做什么?GetProcAddress是获取DLL中一个函数的地址用的。
      The GetProcAddress function returns the address of the specified exported dynamic-link library (DLL) function. 
      

  5.   

    不是,s_test是主程序的一个全局变量,
    用exports输出的
      

  6.   

    p=pchar(s);这个无法实现获得一个变量的指针,也取到这个变量的值了,怎么改变这个变量的值? 
    procedure Tform1.button1.click(sender:Tobject); 
    var 
     p:pointer; 
     s:string; 
    begin 
     p:=getprocaddress(0,'s_test'); 
     s:='则试串'; 
     String(p^) := s;//此处如何把S写入到指针P处,改变变量s_test的值,
                       //这样可以,但会出错,是不是要做什么处理?
     ..... end;
      

  7.   

    ??地址指针的值不可以改吗
    那位朋友有这方的经验,HELP ME
      

  8.   

    's_test'是常量,不能在这个地址里面写东西吧
      

  9.   

    's_test'是一个全局变量,主程序里可以任意修改的,
    只要现在要在DLL来修改主程序里的这个全局变量
      

  10.   

    s_test是什么类型的变量?
    要确保该变量有足够的存储空间可以放你要放的东西。
    开始我理解错了,以为你是要往's_test'这个常量字符串(数据段)的地址里写东西