例如
在DLL中有一下函数:
(1)
function GetValue(aa:string);stdcall;
begin
end;
这种要加sharemem吗
(2)
function GetValue(var aa:string);
begin
end;
这种要加吗看了一下DLL最顶上的注释,好像只有在输出的变量为string时才要加sharemem啊
在DLL中有一下函数:
(1)
function GetValue(aa:string);stdcall;
begin
end;
这种要加sharemem吗
(2)
function GetValue(var aa:string);
begin
end;
这种要加吗看了一下DLL最顶上的注释,好像只有在输出的变量为string时才要加sharemem啊
解决方案 »
- 我的五大任务
- DLL回调函数,无法正常调用,不知道哪出错了[100分求解]
- 做一个监控打印机的程序,要求得到打印的时间,内容,份数,,,高手请指点。
- 推荐一下将*.cd,*.mp3,*.wma转换为*.midi文件的工具软件,哪里有下载。
- 高手发挥的时刻到了,我等菜鸟的学习的时刻到了!
- 还有一个问题
- 怎样让程序最小化后到状态栏中?************************************************************************
- zbird 进来推荐几本好书!!!
- 关于横向打印的问题,清高手指点
- select top 10 * from table。为什么不行呢?select top(10) * from table这样不行?
- 只有20分了。是否能在程序中判断一个字段是索引?
- 请教:派生类如何向基类传递参数??
但是在dll与application之间,很有可能你application里的一个string内存在dll中被释放了,那么再到application去的时候,就会报错。
所以必须加sharemem协调string管理机制!
强烈建议楼主改成:
function GetValue(aa:PChar);
begin
ShowMessage(string(aa));
end;
调用时:
function DoDll;
var
p : Pchar;
begin
p := 'Helllo';//或用StrAlloc方法为pchar类型分配空间,或者用字符数组
GetValue(p);
end;
不想用SHareMM的话就用PChar代替吧。