下面这个函数假如不放在Dll中
就没有问题
可是当它在Dll中下的话就出错function ChangeCode(src:String):pchar;
var
  tmp:string;
  i,len:integer;
begin
  len:=length(src);
  if len mod 2=0 then exit;
  src:=src+'a';
  i := 1;
  while i<=len do
  begin
    tmp := tmp + src[i + 1] + src[i];
    inc(i, 2);
  end;
  result:=tmp;
end;请问这是什么原应呢
在线等!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    类型不匹配。
    最后一句改成 result:=Pchar(tmp);
      

  2.   

    function ChangeCode(src:String):string;
    var
      tmp:string;
      i,len:integer;
    begin
      len:=length(src);
      if len mod 2=0 then exit;
      src:=src+'a';
      i := 1;
      while i<=len do
      begin
        tmp := tmp + src[i + 1] + src[i];
        inc(i, 2);
      end;
      result:=tmp;
    end;这样为什么还是不行呢
      

  3.   

    Dll最好就别用string而采用Pchar做参数,因为别的调用语言不一定能识别Delphi的string
      

  4.   

    在dll中,最好不要使用string类型作为接口调用,因为这是delphi自己的变量类型,别的语言是没有的,如果要使用,则要将sharemem单元放到dpr单元的引用列表第一个位置,同时,调用dll的程序也要如此,而且要将borlandmm.dll放到可搜索的路径下面,它来管理内存。