如题:传值为“select * from A ”
     DLL中断点变为:{L“select * from A”},这是为什么?应该怎样处理?

解决方案 »

  1.   

    library Project1;uses
      System.SysUtils,
      System.Classes;{$R *.res} function GetS(SendS:PChar):PChar;
     var
       TmpS:string;
     begin
         tmps:=SendS;
         Result:=PChar(TmpS);
     end;  exports
        Gets;begin
    end.我是有最简单函数测的,PWideChar同样会{L“值”}showmessage(GetS(Pchar('中国')));
    断点DLL中会是{L“中国”}请问我用的是Delphi XE2,怎么会有C++语法呢?怎样解决?
      

  2.   

    我已测出原因如果Exe与DLL在同一目录下,就正确,如果不在同一目录,就会出现上边的问题。不知道是什么原因,都是相同的东西,在不同文件夹下就有问题了,真奇怪?
      

  3.   

    string在做接口的时候是容易出问题的。使用别的类型来吧
      

  4.   

    function GetS(SendS:PChar):PChar;
     var
      TmpS:string;
     begin
      tmps:=StrPas(SendS);  
      GetMem(Result,Length(tmps)+1);
      Result:=PChar(TmpS);
     end;
      

  5.   

    用 PAnsiChardelphi 新的版本,String 啥的默认都是 Unicode