一dll中有如下的函数
SetDateTime(Year:string;Month:string;Day:string):String;stdcall;调用时出现‘未定义指针操作’的错误,
如将函数改为
SetDateTime(Year:string;Month:string;Day:string):integer;stdcall;
就不会出现错误是何原因,应该如何让函数返回字符串的值

解决方案 »

  1.   

    String是Delphi自定义的类型,是指向一段内存的指针,DLL和主程序不共享内存,当然不能直接返回,一般使用PChar.
    记得在使用前要Getmem,strcopy.
    使用String的话,要在DLL Project文件中加上ShareMem,并要使用BORLANDMM.DLL.
      

  2.   

    Pchar和string之间是怎样转换的呢
      

  3.   

    var
      tmp:string;
      buf:PChar;
    begin
      getmem(buf, strlen(PChar(tmp) );
      strcopy(buf, PChar(tmp);  
      Freemem(buf);
    end;
      
    在EXE内,或DLL内部可以使用 buf:=PChar(Tmp); tmp;=String(Buf);但作为其他调用需要上面那样.帮我的问题 UP一下.
    http://expert.csdn.net/Expert/TopicView1.asp?id=1135866