我在Dll里写了加密算法,供PB使用,返回几个字符串,怎样把string值付给PChar,因为在Dll里,函数执行完成之后就自动释放内存,所以我如何把string值付到PChar所指向的内存区域?

解决方案 »

  1.   

    function a:pchar
    begin
    result:=string[1];
    end;
    不过这样,必须保证string并不是局部变量从而不会在函数返回后被系统delete,
    建议还是用申请内存-内存拷贝比较好.
      

  2.   

    Functon A: pChar;
    Var
      ResultValue: String;
    Begin
      ResultValue:= 'AAAA';
      Result:= pChar(ResultValue)
    end;
      

  3.   

    function StrPCopy(Dest: PChar; const Source: string): PChar;
      

  4.   

    还是出错呀!是不是在调用时不分配内存,然后在DLL里再分配!
      

  5.   

    function StrEncrypt(Src, Pass: PChar): PChar; stdcall;即可。
      

  6.   

    我在返回时用:Result :=StrNew(PChar(SQLStr)),内存不报错,但返回的是乱码?
      

  7.   

    我在DLL里SHowMessage(Result)一下,看到结果是对的,在PB调用返回接收的却是乱码???