获得一个变量的指针,也取到这个变量的值了,怎么改变这个变量的值?
procedure Tform1.button1.click(sender:Tobject);
var
p:pointer;
s:string;
begin
p:=getprocaddress(0,'s_test');
s:='则试串';
//此处如何把S写入到指针P处,改变变量s_test的值
.....end;
procedure Tform1.button1.click(sender:Tobject);
var
p:pointer;
s:string;
begin
p:=getprocaddress(0,'s_test');
s:='则试串';
//此处如何把S写入到指针P处,改变变量s_test的值
.....end;
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;
procedure TForm1.Button1Click(Sender: TObject);
var
p: pointer;
s: string;
begin
p:=getprocaddress(0,'s_test');
s :='测试串';
String(p^) := s;
end;
String(p^) := s;这个可以,但运行后,退出时会出错,丢失地址s_test这个变量是主程序用的,而修改是在主程序调用的其它程序完成的求助
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.
用exports输出的
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;
那位朋友有这方的经验,HELP ME
只要现在要在DLL来修改主程序里的这个全局变量
要确保该变量有足够的存储空间可以放你要放的东西。
开始我理解错了,以为你是要往's_test'这个常量字符串(数据段)的地址里写东西