procedure SendMessage(s: String);
var
  p: PChar;
begin
  p := StrAlloc(Length(s) + 1);
  StrPCopy(p, s);
  ExSendMessage(p);//ExSendMessage是另外一个DLL的函数
  StrDispose(p);
end;
程序在执行完这个过程后报错。
另外,在那个DLL的内部跟踪进去发现传递的字符串内容变掉了,变成很怪异的字符。
这是为什么?

解决方案 »

  1.   

    是不是 StrAlloc 和 StrDispose 引起的呢?
     如果用pchar() 转换试试
      

  2.   

    ExSendMessage(p);//ExSendMessage是另外一个DLL的函数
    关键在这个函数里边楼主应该好好查一下。
      

  3.   

    有可能是调用的问题,比如没有加stdcall.
      

  4.   

    晕 刚才我自己也发现了。就是因为ExSendMessage声明的时候没有加stdcall。呵呵。
    就把分给楼上的这位吧。
    同时想问一下以后自己解决的问题怎么结贴啊?